a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 36|回复: 0

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

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
 该模式引自游戏编程精炼,可是他那儿那琅缦沔是windows的代码,放到linux下不能运行,所以进行了调整。 ' x1 X6 K: ?/ y( O8 o
  声名:在轨范设计的时辰,会经常用到一组或几组类型不异(classT)的数据,假设我们使用链表存储。 , i- a* i& G) _" ^$ O. u3 o8 f; }
  面临的问题:
2 t7 ?: M( q  W  j' U  1、链表存放的位置。 ( }& U/ Z4 d/ R
  2、每建树一个对象都冲要入到该链表中,每销毁一个对象都要从链表中删除 * G7 W+ _0 f+ z1 m' ^% r% [
  3、不能胡乱的插入和删除对象。
8 y6 E4 Z. w. `. l  要解决膳缦沔的问题,可能需要在良多处所插入近似的代码,往往这种代码就是惹人bug的处所,有一种解决方檀卷是“自动列表模式”。 - n  }- C- C4 H8 s! P9 O8 M
  点击(此处)折叠或打开 1 Y* Z- T$ f* J: B5 l; h/ V: t
  #ifndef_TAUTOLISTS_H_ 7 F! S/ d3 m( J8 b0 A
  #define_TAUTOLISTS_H_ 9 e9 ^# Q. p+ p/ ~! y
  #include
' o  c, l+ c4 @4 U  #include
$ m" H. c/ l& d% F# H  usingnamespacestd;
) U# j8 \. S! Y; M$ Q  template
  ^: J: A9 P, M; I7 Y  classTAutolists ( N% n9 x8 M, r  w- s
  { , k6 @1 _; k1 p& X( z, k
  typedeftypenamelist::iteratoriter_t;
6 p2 v* D/ G9 X3 c& s  public:
: g" Q% o. ?( r8 }$ G  TAutolists()
" c- [! h  L! e  {
: Z# S/ t" P1 t0 r& w  ms_List.push_front(static_cast(this)); 7 s/ ]3 S1 w( ~
  }
: X* V) c6 M0 |# a  virtual~TAutolists() ) o: {7 g. e: }: t6 Q# I
  { 3 V& t' F6 \/ l2 V
  ms_List.remove(static_cast(this));   i* m7 B' w6 y' O/ B- a
  }
% i- V  R3 z/ ?. F% k# X# p  public:
8 l* B/ `3 J+ t4 h  staticT*GetAutolistFirst() & L+ }. W2 ]- h
  {   if(ms_List.begin()==ms_List.end())
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-20 03:43 , Processed in 0.199860 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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