您现在的位置:首页 > IT认证 > 软件水平 >

软考程序员辅导笔记:c++自动列表模式详解分析


2012年软考程序员辅导笔记:c++自动列表模式详解分析

该模式引自游戏编程精粹,但是他那里面是windows的代码,放到linux下不能运行,所以进行了调整。

  说明:在程序设计的时候,会经常用到一组或几组类型相同(classT)的数据,假设我们使用链表存储。

  面临的问题:

  1、链表存放的位置。

  2、每创建一个对象都要插入到该链表中,每销毁一个对象都要从链表中删除

  3、不能胡乱的插入和删除对象。

  要解决上面的问题,可能需要在很多地方插入类似的代码,往往这种代码就是引入bug的地方,有一种解决方案就是“自动列表模式”。

  点击(此处)折叠或打开

  #ifndef_TAUTOLISTS_H_

  #define_TAUTOLISTS_H_

  #include

  #include

  usingnamespacestd;

  template

  classTAutolists

  {

  typedeftypenamelist::iteratoriter_t;

  public:

  TAutolists()

  {

  ms_List.push_front(static_cast(this));

  }

  virtual~TAutolists()

  {

  ms_List.remove(static_cast(this));

  }

  public:

  staticT*GetAutolistFirst()

  {

  if(ms_List.begin()==ms_List.end())

  {

  returnNULL;

  }

  else

  {

  ms_ListIter=ms_List.begin();

  return*ms_ListIter;

  }

  }

  staticT*GetAutolistNext()

  {

  if(ms_ListIter==ms_List.end()

  ||++ms_ListIter==ms_List.end())

  {

  returnNULL;

  }

  else

  {

  return*ms_ListIter;

  }

  }

  staticunsignedintGetAutolistCount()

  {

  returnms_List.size();

  }

 

 

【免责声明和版权说明】
本站部分信息来源于互联网,对转载的信息我们力求标明信息的出处,我们尊重作者的版权著作权,对我们转载的信息如有异议或有侵权或违法信息请及时联系我们,本站会立即删除,对原创内容我们愿意支付适当的稿酬,联系方式:邮件:webmaster@jscj.com 电话:4008816886

相关文章

无相关信息
更新时间2022-03-13 11:10:58【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  添加客服微信

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话: