a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 35|回复: 0

[程序员] 2012年软件水平考试程序员知识精讲:C++自动列表模式

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
 该模式引自游戏编程精炼,可是他那儿那琅缦沔是windows的代码,放到linux下不能运行,所以进行了调整。 9 |, n8 ~3 L, j4 `+ o
  声名:在轨范设计的时辰,会经常用到一组或几组类型不异(classT)的数据,假设我们使用链表存储。 5 P4 H" R% N" E+ \/ U" [9 k
  面临的问题:   A, S8 R9 g: ^1 [1 \3 h
  1、链表存放的位置。 / B* B0 o0 T( O0 d
  2、每建树一个对象都冲要入到该链表中,每销毁一个对象都要从链表中删除
$ r2 h- i! S% X  h+ c7 o  3、不能胡乱的插入和删除对象。 : @8 V( A$ h% r
  要解决膳缦沔的问题,可能需要在良多处所插入近似的代码,往往这种代码就是惹人bug的处所,有一种解决方檀卷是“自动列表模式”。 + g- T% [+ n: v+ v: r7 d- {  T
  点击(此处)折叠或打开
; `8 t0 t) |" b0 \! F6 L  #ifndef_TAUTOLISTS_H_ 4 F- @- o- A9 j5 ]  L8 i
  #define_TAUTOLISTS_H_
1 n# W$ I4 I' J- H& L  #include
4 L" R' z# u& [5 P* u6 |3 A7 W  #include
9 o% m- {: w- U, z! y, `% ^1 w  usingnamespacestd; $ a, I. D6 j6 S
  template
% _/ s5 K5 {+ B. ~& Q( `  classTAutolists
9 B/ j% h: t2 \" q/ T) z  {
4 m5 i5 U: ]6 B" d8 i$ c  typedeftypenamelist::iteratoriter_t; # Y/ }) @) U7 N1 c
  public: / A" |$ ~+ n3 I  V
  TAutolists() ( U( E) Y$ y' L! }8 _
  {   A# \/ F% V( F* t5 f
  ms_List.push_front(static_cast(this));
% L6 g9 g- a+ @2 u  }
& R& D- J+ F7 l4 s  L: H6 q* u  virtual~TAutolists()
% X- a; R* `+ n: g- ?8 X  { 3 n3 Y  M) L7 C7 i, @
  ms_List.remove(static_cast(this)); % H* a, ]* h6 D& p$ j/ A% Z
  }
3 _0 J1 H) {$ |3 r% e  public:
. K, J+ s' Q  T& ]! l8 S  staticT*GetAutolistFirst() 8 ~, g) h; D7 g& x' p
  {   if(ms_List.begin()==ms_List.end())
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-15 23:49 , Processed in 0.527142 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表