Std::list iterator 的初始化和有效性判断
来源:互联网 发布:java开发框架是什么 编辑:程序博客网 时间:2024/06/06 00:58
最近在使用Std::list 的时候,程序偶尔会在iterator 进行比较的时候崩溃。Review代码发现iterator的内存为0xcdcdcdcd, 很显然内存地址越界了。所以对Std::list iterator 的初始化和有效性的问题做了一些查找,很可惜没能搜集到多少有用的资料。
Comment: VS2008 下发现0xcdcdcdcd 为m_List.end();
std::list<CMyData *>::iterator it;
std::list<CMyData *> m_List;
1 初始化
1.1 it = m_List.end();
1.2 单独定义一个list <CMyData*> sNull;
it=sNull.end();
2 有效性判断
这个问题比较麻烦,至今没有找到满意的方法。
2.1 对赋值后的
If(I t == m_List.end())
If(I t == sNull.end())
2.2 VS2005, 2008
判断 (it._Mycont == sNull.end()._Mycont)即可,
如果( it._Mycont == sNull.end()._Mycont )是真的话,表示it处于初始状态。
3 注意事项
3.1 尽量保证所比较的元素为iterator指向单个list中的元素;
3.2
3.2.1 Use (your list).end() to represent an invalid iterator into your list (1.1中所述);
3.2.2 Wrap your iterator in something like boost::optional
3.2.3 Use an additional bool variable to indicate the validity of your iterator
- Std::list iterator 的初始化和有效性判断
- std::list使用和迭代器iterator使用
- 对std::vector/list的iterator简单包装尝试
- List和Iterator的区别
- iterator和List的区别
- 日期有效性的判断
- QList 和std::list的比较
- 【面试】std::vector 和 List 的区别
- PE文件的有效性判断
- Java判断IPv4的有效性
- Swift判断API的有效性
- Query.list()和Query.iterator()的区别
- query的list和iterator区别
- hibernate -- list和iterator方法的区别
- list和iterator方法的区别
- Hibernate--- list和iterator方法的区别
- hibernate -- list和iterator方法的区别
- 模板类中定义std::list::iterator iter容器的迭代器变量的问题
- 关于eclipse的一些设置
- 软件设计原则----开-闭原则(OCP)
- adb devices no permissions 解决办法
- Android学习之--prelink
- hdu 3065(ac自动机)
- Std::list iterator 的初始化和有效性判断
- wifi 流程
- C语言利用栈实现Polish计算器
- 5分钟配置Apache 2 HTTPS服务器
- 直方图、正态分布图与SPC图
- sed用法
- json学习
- C++和VC++还有Visual Studio
- 对 Message 和 Handle 的机制理解 必须写一个例子学习