Effective STL--不同容器删除特定元素的方法
来源:互联网 发布:上传图片 js 编辑:程序博客网 时间:2024/05/16 12:39
输入迭代器是每个迭代位置智能被读一次的只读迭代器。输出迭代器是每个迭代位置只能被写一次的只写迭代器。输入和输出迭代器被塑造为读和写输入和输出流。前向迭代器有输入和输出迭代器的能力,但是他们可以反复读或写一个位置。它们不支持operator--,所以他们可以高效地向前移动任意次数。所有的标准STL容器都支持比前向迭代器更强大的迭代器。散列容器是前向迭代器,单链表容器也提供前向迭代器
双向迭代器就想前向迭代器,除了他们的后退尅像前进一样容易。标准关联容器都提供双向迭代器。List也有。
随机访问迭代器可以做双向迭代器做的一切事情,但他们也提供“迭代器算术”,有一步向前或向后跳的能力。Vector string deque都提供随机访问迭代器。指针数组的指针可以作为数组的随机访问迭代器。
对于deque迭代器失效的情况:
1、 在deque容器首部或者尾部插入元素不会使得任何迭代器失效。
2、 在其收不或尾部删除元素则只会使指向被删除元素的迭代器失效
3、 在deque容器的任何其他位置的插入和删除操作将使指向该容器元素的所有迭代器失效
容器容纳了对象,但不是你给他们的那个对象。此外,当你从容器中获取一个对象时,你所得到的的对象不是容器里的那个对象。取而代之的是,当你想容器中添加一个对象,静茹容器的是你指定的对象的拷贝。
在容器中删除元素的分类情况:
1、去除一个容器总特定值的所有对象:
如果容器是vector string或deque,使用erase-remove惯用法
c.erase(remove(c.begin(),c.end(),1999),c.end());//当c时vectorstring deque时,erase-remove惯用法是去除特定值的元素
如果容器是list,使用list::remove
c.remove(1999); //当c时List时,remove成员函数是去除特定值的元素的最佳方法
如果容器是标准关联容器,使用它的erase成员函数
c.erase(1999);//当c时标准关联容器时erase成员函数是去除特定值的元素的最佳方法
2、去除一个容器中满足一个特定判定式的所有对象:
如果容器是vector string或deque,使用erase-remove_if惯用法
c.rease(remove_if(c.begin(),c.end(),badvalue),c.end());//当c时vectorstring deque时这样是去掉badbale返回值为真的对象的最佳方法
如果容器是list 使用list::remove::if
c.remove_if(badvalue);//当c时list时这是去掉badvalue返回值为真的对象的最佳方法
如果容器是标准关联容器,使用remove_copy_if和swap,或写一个循环来遍历容器元素,当你吧迭代器传给erase时记得后置递增它
For(container<int>::iterator I =c.begin();i!=c.end();)
{
If(badvalue(*i))c.erase(i++);
Else++I;
}
//for循环的第三部分是空的,在下面自增
在循环内做某些事情(除了删除对象之外):
如果容器是标准序列容器,写一个循环来遍历容器元素,每当调用erase时记得都用它的返回值更新你的迭代器
如果标准容器是标准关联容器,写一个循环来遍历容器元素,当你把迭代器传给erase时记得后置递增它。
- Effective STL--不同容器删除特定元素的方法
- Effective STL: 不同容器删除元素的方法
- Effective STL(3)-删除特定元素
- Effective STL-各种容器正确删除元素方法
- 关于STL容器中vector特定元素的删除问题
- Effective STL 读书笔记之慎重选择删除容器元素的方法
- 删除STL容器元素的方法
- effective stl 第九条: 慎重选择删除元素的方法
- STL容器元素的删除
- STL:循环删除容器中元素的方法和陷阱
- STL:循环删除容器中元素的方法和陷阱
- STL:循环删除容器中元素的方法和陷阱
- STL序列式指针容器中删除元素的方法
- 总结STL中容器中元素的删除方法
- C++ STL容器遍历删除元素的方法
- 选择删除STL标准容器元素的方法
- stl容器中的元素删除方法
- STL容器删除元素的陷阱(转)
- QT 解析 html文档中带中文出错的解决为法
- 【phonearena】来自亚洲的怪兽:便宜得不可思议的魅族M1 Note
- 快速提取纷乱复杂psd文件图层 存储透明png 与透明色填充颜色 切图必备技能
- CSS3 content attr
- vs2008+ddkwizard+wdk基于xp环境 windows驱动开发环境配置
- Effective STL--不同容器删除特定元素的方法
- MySQL安装指南
- LeetCode:Rotate Image
- 视频之争:移动UGC欠临门一脚
- 每个Web开发者必备的9个软技能
- 存储过程的一个简单实例
- ArcGIS API for Silverlight开发入门(4):用户与地理信息之间的桥梁--GraphicsLayer
- 同样是程序员 为什么薪资不同
- div标签的箱子分布