STL中的erase函数跟remove函数有什么区别?
2014-08-11 11:09
190 查看
http://hi.baidu.com/tkzlpocleodtxzr/item/3a3a6037fdc8460cceb9fe86
STL中的erase函数跟remove函数有什么区别?
vector中erase是真正删除了元素, 迭代器访问不到了。 algorithm中的remove只是简单的把要remove的元素移到了容器最后面,然后其余元素前移,迭代器还是可以访问到的。因为algorithm通过迭代器操作,不知道容器的内部结构,所以无法做到真正删除。
remove并不真正从容器中删除元素(容器大小并未改变),而是将每一个与value不相等的元素轮番赋值给first之后的空间,返回值FowardIterator 标示出重新整理后的最后元素的下一个位置。所以可以有以下操作:
vector<int> array;
array.erase(remove(array.begin(),array.end(),6),array.end());
删除数组中所有元素等于6的元素
STL中的erase函数跟remove函数有什么区别?
vector中erase是真正删除了元素, 迭代器访问不到了。 algorithm中的remove只是简单的把要remove的元素移到了容器最后面,然后其余元素前移,迭代器还是可以访问到的。因为algorithm通过迭代器操作,不知道容器的内部结构,所以无法做到真正删除。
remove并不真正从容器中删除元素(容器大小并未改变),而是将每一个与value不相等的元素轮番赋值给first之后的空间,返回值FowardIterator 标示出重新整理后的最后元素的下一个位置。所以可以有以下操作:
vector<int> array;
array.erase(remove(array.begin(),array.end(),6),array.end());
删除数组中所有元素等于6的元素
相关文章推荐
- STL中的erase函数跟remove函数有什…
- 内联函数与普通函数的区别是什么
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- c# 中委托和直接函数调用用什么区别,好处和目的在哪?
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- 内联函数与普通函数的区别是什么(转)
- WinForm 中的 Form_Load函数和他的构造函数 public Form()有什么区别?
- 什么是可重入函数和不可重入函数以及区别
- SetWindowLong()和 SetClassLong()这两个函数有什么区别?
- static 函数的用途 Static 函数的特点 与普通函数 有什么区别?
- 内联函数与普通函数有什么区别
- c#中委托和直接函数调用用什么区别,好处和目的在哪?
- 内联函数与普通函数的区别是什么
- 延时函数delay与sleep有什么区别呢?
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- 函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- 在什么情况下会用到虚方法(虚函数)?它与抽像函数区别等探讨