射精一区欧美专区|国产精品66xx|亚洲视频一区导航|日韩欧美人妻精品中文|超碰婷婷xxnx|日韩无码综合激情|特级黄片一区二区|四虎日韩成人A√|久久精品内谢片|亚洲成a人无码电影

您現(xiàn)在的位置:首頁 > IT認證 > 軟件水平 >

軟考程序員輔導(dǎo)筆記:c++自動列表模式詳解分析


2012年軟考程序員輔導(dǎo)筆記:c++自動列表模式詳解分析

該模式引自游戲編程精粹,但是他那里面是windows的代碼,放到linux下不能運行,所以進行了調(diào)整。

  說明:在程序設(shè)計的時候,會經(jīng)常用到一組或幾組類型相同(classT)的數(shù)據(jù),假設(shè)我們使用鏈表存儲。

  面臨的問題:

  1、鏈表存放的位置。

  2、每創(chuàng)建一個對象都要插入到該鏈表中,每銷毀一個對象都要從鏈表中刪除

  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();

  }

相關(guān)文章

無相關(guān)信息
更新時間2022-03-13 11:10:58【至頂部↑】
聯(lián)系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號) | 

付款方式留言簿投訴中心網(wǎng)站糾錯二維碼手機版

客服電話: