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

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

軟考程序員輔導:c++自動列表模式


2012年軟考程序員輔導:c++自動列表模式

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

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

  面臨的問題:

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

  }

  public:

  staticlistms_List;

  staticiter_tms_ListIter;

  };

  //Declarationsofstaticvariables

  template

  listTAutolists::ms_List;

  template

  //typedeftypenamelist::iteratoriter_t;

  typenamelist::iteratorTAutolists::ms_ListIter;

  #endif

  測試程序:

  點擊(此處)折疊或打開

  #include

  #include"TAutolists.h"

  classvec:publicTAutolists

  {

  public:intm_x;
  intm_y;

  };

  usingnamespacestd;

  /*

  template

  classA

  {

  public:

  staticTa;

  };

  template

  TA::a;

  intmain(intargc,char*argv[])

  {

  A::a=0;

  }

  */

  intmain(intargc,char*argv[])

  {

  veclv1;

  lv1.m_x=1;

  veclv2;

  lv2.m_x=2;

  cout《"countis"《lv1.GetAutolistCount()《endl;

  vec*cptmp=lv2.GetAutolistFirst();

  while(cptmp)

  {

  cout《"xis"《cptmp->m_x《endl;

  cptmp=lv2.GetAutolistNext();

  }

  return(0);

  }

相關文章

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

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

客服電話: