自处理list

来源:互联网 发布:公交查询什么软件好用 编辑:程序博客网 时间:2024/05/21 14:58
一个自处理的list 用途多多
  1
   1 //子项
  2   2 class autoItem
  3   3 {
  4   4 public:
  5   5     //处理
  6   6     virtual bool  proces() = 0;
  7   7     //弹出
  8   8     virtual bool  ok() = 0; 
  9   9     //处理顺序
 10  10     virtual int   Order(){return 0;}
 11  11 };
 12  12 enum sortType
 13  13 {
 14  14     ST_Input,
 15  15     ST_Custom
 16  16 };
 17  17 //自处理list
 18  18 class _autolist
 19  19 {
 20  20 public:
 21  21     _autolist( sortType _type );
 22  22     ~_autolist();
 23  23 
 24  24     //继承函数
 25  25 public:
 26  26     //加入处理序列
 27  27     virtual bool  push(autoItem *p);
 28  28     //执行处理序列
 29  29     virtual bool  go();
 30  30     //清理所有
 31  31     virtual bool  clear(); 
 32  32 
 33  33     //
 34  34 protected:
 35  35     std::list<autoItem*> itemList;
 36  36     sortType _sortType;
 37  37 };
 38  38 
 39  39 
 40  40 _autolist::_autolist( sortType _type )
 41  41 {
 42  42     _sortType = _type;
 43  43 }
 44  44 
 45  45 _autolist::~_autolist()
 46  46 {
 47  47     clear();
 48  48 }
 49  49 
 50  50 bool _autolist::push( autoItem *p )
 51  51 {
 52  53     if (p == NULL) return false;
 53  54     switch (_sortType)
 54  55     {
 55  56     case ST_Input:
 56  57         {
 57  58             itemList.insert(itemList.end(),p);
 58  59             return true;
 59  60         }
 60  61     case ST_Custom:
 61  62         {
 62  63             if (itemList.size() == 0)
 63  64             {
 64  65                 itemList.push_back(p);
 65  66                 return true;
 66  67             }
 67  68             static std::list<autoItem*>::iterator it;
 68  69             it= itemList.begin();
 69  70             for (; it != itemList.end();it++)
 70  71             {
 71  72                 if ((*it)->Order() < p->Order())continue;
 72  73                 itemList.insert(it,p);
 73  74                 break;
 74  75             }
 75  76             return true;
 76  77         }
 77  78     default:
 78  80         return false;
 79  82     }
 80  83     return false;
 81  84 }
 82  85 
 83  86 bool _autolist::go()
 84  87 {
 85  88     static std::list<autoItem*>::iterator it;
 86  89     int nsize = itemList.size();
 87  90     it= itemList.begin();
 88  91     for (; it != itemList.end();)
 89  92     {
 90  93         (*it)->proces();
 91  94         if ( (*it)->ok())
 92  95             it = itemList.erase(it);
 93  96         else
 94  97             it++;
 95  98     }
 96  99     return true;
 97 100 }
 98 101 
 99 102 bool _autolist::clear()
100 103 {
101 104     itemList.clear();
102 105     return true;
103 106 }
104 107 
105 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 饿了吗账户异常怎么办 单位里有人整你怎么办 乌鲁木齐信息采集结束后怎么办 头发很长时间不长怎么办啊 打嘟噜时间不长怎么办 阴茎勃起的时间不长怎么办 睡觉的时间不长怎么办 每次锻炼时间不长怎么办 微信好友不知道是谁怎么办 就一个软件闪退怎么办 葫芦侠修改闪退怎么办 戴尔游匣磁盘占用100怎么办 步步高家教机扫描笔不亮怎么办 社保卡手机号换了怎么办 香港公司进出口没有申报怎么办 智能电视右上角网络未连接怎么办 电子秤按键板不好用怎么办失灵 桑塔纳车钥匙锁车里了怎么办 舌头上有锯齿印怎么办 夏天有脚气脚臭怎么办 xp分辨率太高黑屏怎么办 农村淘宝标识类目没了怎么办 被投诉到食品监督局怎么办 被客户315投诉了怎么办 给人打不接受调解怎么办 失业证年审忘了怎么办 工商年检过期4天怎么办 个体营业执照年审过期了怎么办 企业年报密码忘了怎么办 税务年报报错了怎么办 工商证过期5年怎么办 车年检标志丢了怎么办 年检标志打错了怎么办 贵州个体出租车工商执照年检怎么办 驾驶证考试预约提示网络繁忙怎么办 帝豪显示屏花屏怎么办 注册公司居委会不盖章怎么办 营业执照名字和店名不一样怎么办 开炸鸡店没经验怎么办 提名候选人时重名重姓怎么办 别人用我的店名怎么办