STL 迭代器失效和运算符重载容易错误问题
2015-08-15 19:10
375 查看
1.一定要小心迭代器失效
1) 容器本身是空的,使用迭代器前,需要检验迭代器是否有效。
2) 容器本身增删失效,erase返回的是下一个迭代器,容器改变了插入删除了那么原来的迭代器就很容易失效。
3)容器存放的数据增删,容器内尽量存放的是结构体,而不是指针,存放指针很容易导致那块内存删掉了而变成存放的是野指针了。
2. STL结构体里面包含有 STL容器,那么不能使用memset来初始化
3.运算符重载要非常小心,需要考虑全面
小心二叉树类型容器排序查找用到的运算符<重载的写法,序列类型容器排序用到的<运算符重载,及其序列查找使用用std:find用到的==运算符重载。
1) 容器本身是空的,使用迭代器前,需要检验迭代器是否有效。
2) 容器本身增删失效,erase返回的是下一个迭代器,容器改变了插入删除了那么原来的迭代器就很容易失效。
3)容器存放的数据增删,容器内尽量存放的是结构体,而不是指针,存放指针很容易导致那块内存删掉了而变成存放的是野指针了。
2. STL结构体里面包含有 STL容器,那么不能使用memset来初始化
3.运算符重载要非常小心,需要考虑全面
小心二叉树类型容器排序查找用到的运算符<重载的写法,序列类型容器排序用到的<运算符重载,及其序列查找使用用std:find用到的==运算符重载。
相关文章推荐
- SPOOLing系统是虚拟设备最典型SORT的代表
- POJ 1503 Integer Inquiry 高精度
- 高效学习,战胜拖延症
- ssh bitbucket github
- Online Judge中基本的输入输出
- SpringMVC 基础教程 框架分析
- linux shell 25问
- 快速排序1.0
- JavaSE基础--(四)异常处理
- html5 说明
- VS2010中使用GDAL(一)
- 正确移除List中对象
- C# WebService URL重写
- 函数1
- android---adapter的刷新
- LinqPad使用教程
- 2014全球移动互联网大会召开
- 图片下载器类
- Hibernate如何映射枚举类型num
- [C#]6.0新特性浅谈