慎重选择删除元素的方法STL

1.要删除容器中有特定之的所有对象:

如果容器是vector、string或deque,则使用erase-remove习惯用法。

如果容器是list,则使用list::remove。

如果容器是一个标准关联容器,则使用它的erase成员函数。

2.要删除容器中满足特定判别式(条件)的所有对象:

如果容器是vector、string或deque,则使用erase-remove_if习惯用法。

如果容器是list,则使用list::remove_if。

如果容器是一个标准关联容器,则使用remove_copy_if和swap,或者写一个循环来遍历容器中的元素,记住当把迭代器传给erase时,要对它进行后缀递增。

3.要在循环内部做某些(除了删除对象之外的)操作:

如果容器是一个标准序列容器,则写一个循环来遍历容器中的元素,记住每次调用erase时,要用它的返回值更新迭代器。

如果容器是一个标准关联容器,则写一个循环来遍历容器中的元素,记住当把迭代器传给erase时,要对迭代器做后缀递增。

时间: 2024-08-29 01:43:45

慎重选择删除元素的方法STL的相关文章

STL中慎重选择删除元素的方法

 一.要删除容器中有特定值的所有对象 1.如果容器是vector.string或deque,则使用erase-remove习惯用法.例如: vector<int> c; c.erase(remove(c.begin(),c.end(),1963),c.end());//删除值是1963的元素 下面讲一下算法remove: template<classForwardIterator,class T> ForwardIteratorremove(ForwardIterator fi

条目九《慎重选择删除元素的方法》

慎重选择删除元素的方法 不同容器删除元素的方法是有区别的. 对于删除容器里的一个元素 序列容器( string, vector, deque)最高效的方法是erase-remove. list最高效的方法是remove. 关联容器没有remove成员函数,只有erase,直接用erase函数来删除元素. 若删除容器里符合一个判别式的元素: 序列容器( string, vector, deque)最高效的方法是erase-remove_if. list最高效的方法是remove_if. 关联容器的

慎重选择删除元素的方法

总结本条款,一共有以下几点是需要牢记的: 1.要删除容器中有特定值的所有对象: (1).如果容器是vector.string或deque,则使用erase-remove习惯用法. (2).如果容器是list,则使用list::remove (3).如果容器是标准关联容器,则使用它的erase成员函数. eg:  假定你有一个标注的STL容器c,它包含int类型的整数:Container<int> c; 而你想删除c中所有值为1963的元素.则可以使用erase-remove.习惯用法: c.e

STL慎重选择删除元素的

 一.要删除容器中有特定值的全部对象 1.假设容器是vector.string或deque.则使用erase-remove习惯使用方法.比如: vector<int> c; c.erase(remove(c.begin(),c.end(),1963),c.end());//删除值是1963的元素 以下讲一下算法remove: template<classForwardIterator,class T> ForwardIteratorremove(ForwardIterator

Effective STL: 不同容器删除元素的方法

不同容器删除元素的方法 去除一个容器中有特定值的所有对象: 如果容器是vector.string或deque,使用erase-remove惯用法. 如果容器是list,使用list::remove. 如果容器是标准关联容器,使用它的erase成员函数. 去除一个容器中满足一个特定判定式的所有对象: 如果容器是vector.string或deque,使用erase-remove_if惯用法. 如果容器是list,使用list::remove_if. 如果容器是标准关联容器,写一个循环来遍历容器元素

给数组添加一个根据指定下标删除元素的方法、得到0-100的随机数不重复(js)、得到外联样式的css样式值

/** *删除数组指定下标或指定对象 */ Array.prototype.remove=function(obj){ for(var i =0;i <this.length;i++){ var temp = this[i]; if(!isNaN(obj)){ temp=i; } if(temp == obj){ for(var j = i;j <this.length;j++){ this[j]=this[j+1]; } this.length = this.length-1; } } }

开源中国 AnAppManager 从栈中删除元素的方法为什么不用出栈的方法呢?

今天写Demo的时候,发现了个问题,调试了半天,发现个规律:  从B 跳转到A界面 并finish 掉B,A的onCreate  居然快于B的onDestroy  ,使得在APP 开发 常用的管理界面的工具类中,一般界面初始化入栈,销毁的时候出栈.将界面从栈中移除的时候,选则的是 栈的remove 方法,而没有选择 pop出栈删元素的方法,如果采用这种方法,会发现当从B跳转到A的时候,A也会被关掉.

JS中选择DOM元素的方法集锦

各种选取元素的方法的速度,用原生的方法比jQuery要快差不多8倍,IE8是最慢的,IE9的速度差不多是IE8的3倍,Chrome的表现最好,其次是Firefox 选取文档元素的方法: 1.通过ID选取元素(getElementById)   1)使用方法:document.getElementById("domId")        其中,domId为要选取元素的id属性值   2)兼容性:低于IE8版本的IE浏览器对getElementById方法的实现是不区分元素ID号的大小写的

NSMutableArray减元素的方法

上一章我们讲解了增加元素的方法, 现在我们来看看删除元素的方法. 这里涉及到的方法: removeAllObjects: 这个方法的意思就是删除数组里的所有元素. removeLastObject: 这个方法的意思是删除数组里最后的一个元素. removeObject: 这个方法是指删除指定的元素, 下面的例子里输入的是@"One", 意思就是把数组里的One元素删除. removeObjectAtIndex: 这个方法指的是删除数组里的第几个元素, 例子里写的是1, 就是把第一个元素