STL之vector的使用三(vector的删除)

STL之vector的使用三(vector的删除)

删除指定元素

[cpp]

vector<double> v1;
//….初始化代码
vector<double>:: iterator i = find( v1.begin(),v1.end(), 3.0 );
if( i != v1.end() )
{
v1.erase(i);
}

[/cpp]

这样就真的删除了么指定的元素了么?没有。其实只是内部的元素作了移动,vector的删除的时间复杂度是很高的。所以选择容器的时候,如果需要频繁在中间插入和删除元素,那选择vector就会影响效率了。

注意:插入或者删除操作会使得迭代器失效。
原则:使用erase-remove惯用法删除元素

[cpp]v1.erase( remove(v1.begin(), v1.end(), 3.0),  v1.end() );[/cpp]