Effective STL 09 删除元素
来源:互联网 发布:设置彩铃软件 编辑:程序博客网 时间:2024/06/05 07:17
************************************************
时间:2013年10月18日
作者:常保龙
地点:核所C105
************************************************
当删除容器中的元素时,总是或多或少遇到一些问题,要么是迭代器失效,要么是效率问题;不过幸好有Effective STL,让自己豁然开朗。如下规则:
1、标准序列容器:vector、deque、string、list
//判断式bool badValue(int x);//返回x是否是"bad"
a)连续内存容器:vector、deque、string
v.erase(remove(v.begin(), v.end(), 100), v.end());//删除指定值的所有元素,O(n)
v.erase(remove_if(v.begin(), v.end(), badValue), v.end());//删除满足特定判定式的所有元素
//删除元素的同时,在循环体内做事for (SeqContainer<int>::iterator i = c.begin(); i != c.end();){if (badValue(*i)){logFile << "Erasing " << *i << '\n'; i = c.erase(i);//返回已删除元素的下一个元素的迭代器}else{++i; }}
b)非连续内存容器:list
v.remove(100);//删除指定元素,O(n)
v.remove_if(v.begin(), v.end(), badValue);//删除满足特定判定式的所有元素
//删除元素的同时,在循环体内做事for (SeqContainer<int>::iterator i = c.begin(); i != c.end();){if (badValue(*i)){logFile << "Erasing " << *i << '\n'; /*方法一*/ i = v.erase(i); //返回已删除元素的下一个元素的迭代器/*方法二 v.erase(i++); //返回已删除元素的下一个元素的迭代器*/}else{++i; }}2、标准关联容器:set、map、multiset、multimap
v.erase(100);//删除指定元素,O(logn)
//删除满足特定判定式的所有元素//方法一AssocContainer<int> goodValues;remove_copy_if(v.begin(), v.end(), inserter(goodValues, goodValues.end(), badValue));v.swap(goodValues);//方法二for(AssocContainer<int>::iterator i = v.begin(); i != v.end();){ if(badValue(*i)){ v.erase(i++); } else{ ++i; }}
//删除元素的同时,在循环体内做事for (AssocContainer<int>::iterator i = c.begin(); i != c.end();){if (badValue(*i)){logFile << "Erasing " << *i << '\n'; v.erase(i++); //返回已删除元素的下一个元素的迭代器}else{++i; }}
- Effective STL 09 删除元素
- Effective STL(3)-删除特定元素
- Effective STL: 不同容器删除元素的方法
- Effective STL--不同容器删除特定元素的方法
- effective stl 第九条: 慎重选择删除元素的方法
- Effective STL-各种容器正确删除元素方法
- Effective STL 读书笔记之慎重选择删除容器元素的方法
- Stl 删除元素注意事项
- STL删除元素
- STL删除list元素
- STL删除元素
- Stl 删除元素注意事项
- STL 删除元素
- STL vector 删除元素
- STL删除指定元素
- effective stl:如果确实需要删除元素,则需要在remove这一类算法之后调用erase
- effective stl 第32条:如果确实需要删除元素,则需要在remove之后调用erase
- STL list删除元素出错
- 存储的一些基本概念(HBA,LUN)
- 使用Filezilla向VMWare中的虚拟机中上传文件提示“无法启动传输”的解决办法
- CVS 查看指定branch的revision (copied)
- Workflow4 持久化之数据库模型
- 大型网站架构不得不考虑的10个问题
- Effective STL 09 删除元素
- 10月17日,微软开始推送Win8.1更新,批量激活用户不在此列
- 质数(素数)
- shell如何将标准错误输出重定向为标准输出
- hdu 1754(I hate it) 线段树
- 关于架构的讨论:烦人的细节
- 领导人卡通形象也是走群众路线
- XtraReports pageheight 属性不能改
- pdf转换swf