STL容器迭代过程中删除元素技巧(转)
来源:互联网 发布:mac怎么玩梦幻西游手游 编辑:程序博客网 时间:2024/05/17 08:48
1.连续内存序列容器(vector,string,deque)
序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素。
vector<int> c;
for(vector<int>::iterator it = c.begin(); it != c.end();)
{
if(need_delete())
it = c.erase(it);
else
++it;
}
2.关联容器(set,multiset,map,multimap)
关联容器的erase方法没有返回值,被删除的迭代器失效,所以删除前必须确保能得到下一个迭代器,可以用“后置递增迭代器”技术。
map<int,int> m;
for(map<int,int>::iterator it = m.begin(); it != m.end();)
{
if(need_delete())
m.erase(it++);
else
++it;
}
m.erase得到it的一个副本,在erase真正开始之前it已经递增了。
所以erase得到了当前的迭代器,在erase内部工作开始之前it已经++了,正好满足我们的需要。
3.非连续内存序列容器(list)
只所以单独列出来是因为以上两种方法对list都适用,可依自己喜好选择。
0 0
- STL容器迭代过程中删除元素技巧(转)
- STL容器迭代过程中删除元素技巧(转)
- STL容器迭代过程中删除元素技巧(转)
- STL容器迭代删除元素
- STL在迭代的过程中,删除指定的元素
- STL容器:在遍历的过程中删除元素
- STL容器删除元素的陷阱(转)
- stl在遍历过程中删除元素
- STL容器元素的删除
- stl容器遍历删除元素
- STL容器之 元素删除
- 安全删除STL容器元素
- 总结STL中容器中元素的删除方法
- 删除STL list容器中元素使用经验分享
- STL:循环删除容器中元素的方法和陷阱
- STL:循环删除容器中元素的方法和陷阱
- FAQ14: STL中vector容器如何间隔删除元素?
- STL 删除容器中元素的几个特殊问题
- 设计模式学习之路(一) 记住所有设计模式
- 网络游戏中的主循环
- Android围住神经猫开发指南【一】游戏介绍
- NOIp模拟赛-改造二叉树
- 算法导论学习笔记-第十三章-红黑树
- STL容器迭代过程中删除元素技巧(转)
- HDU 4341 Gold miner(分组背包)
- Java程序员应该了解的10个面向对象设计原则
- (三 )运算符重载
- TRANSLATE函数(DB2、Oracle)区别
- SVN提交上传。a包
- c 语言字符串拆分
- void及void指针含义的深刻解析
- ExtJs在Eclipse中的代码提示环境配置