STL迭代器失效问题记录
2012-11-14 20:58
357 查看
/* 根据<stl源码剖析>书中所述,map和list相同的某些性质,当客户端对她进行元素新增操作或删除操作时, 操作的所有迭代器,在操作完成之后依然有效,但让,被删除的那个元素的迭代器必然是个例外。 而vector的迭代器在删除的时候,会返回指向下一个内容的指针,但是对vector的任何操作,一旦引起空 间重新配置,指向原来的vector的所有迭代器都将失效了。这是程序员容易犯的一个错误。 */ #include <map> #include <vector> #include <iostream> using namespace std; int main() { map<int, int> obj_m; vector<int> obj_v(3); obj_v[0] = 2; obj_v[1] = 3; obj_v[2] = 4; obj_m[1] = 2; obj_m[2] = 3; obj_m[3] = 4; /* map的erase返回操作为void类型 std::map::erase <map> void erase ( iterator position ); size_type erase ( const key_type& x ); void erase ( iterator first, iterator last ); */ map<int,int>::iterator iter = obj_m.begin(); while(iter != obj_m.end()) { obj_m.erase(iter++); } /* vector的erase返回值为迭代器 std::vector::erase <vector> iterator erase ( iterator position ); iterator erase ( iterator first, iterator last ); */ vector<int>::iterator iter_v = obj_v.begin(); for(; iter_v != obj_v.end();) { iter_v = obj_v.erase(iter_v); } cout<<obj_m.size()<<endl; cout<<obj_v.size()<<endl; system("pause"); return 0; }
相关文章推荐
- [故障排除记录]虚拟目录程序中UploadFile控件失效问题的解决方法
- spring AOP 日志记录失效问题
- Android开发问题记录-webview goBack键失效
- 转:STL迭代器失效问题
- extjs4.1 动态加载 checkboxgroup 后checked 为true老是失效的问题+combobo自动选择特定记录
- STL迭代器失效问题
- STL迭代器失效问题
- 关于thinkphp(或者PHP)session丢失或失效问题记录
- STL迭代器失效的问题
- STL迭代器及迭代器失效问题
- 记录一次SSO gateway=true 失效的问题
- 【REACT NATIVE 跨平台应用开发】环境搭建问题记录&&XCODE7模拟器上COMMAND+R失效的几种替换方法
- Log4j 1.x JDBCAppender记录日志失效问题详解
- STL迭代器失效问题
- JDK1.6在SUSE11下问题跳变定时任务失效问题记录
- STL迭代器失效问题
- STL迭代器及迭代器失效问题
- 记录 laravel session失效问题
- IE8-下背景色半透明滤镜在jquery动画中失效问题记录