#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <class T>
inline void print_elements(const T & coll, const char * str)
{
typename T::const_iterator itor;
cout << str ;
for(itor = coll.begin(); itor != coll.end(); ++itor)
cout << *itor << ' ';
cout << endl;
}
int main()
{
typedef vector<int> intVec;
intVec vec;
vec.push_back(1);
vec.push_back(5);
vec.push_back(9);
vec.push_back(3);
vec.push_back(5);
vec.push_back(1);
vec.push_back(16);
intVec::iterator itor;
print_elements(vec, "all elements:");
itor = remove(vec.begin(), vec.end(), 5);
print_elements(vec, "after remove()");
vec.erase(itor, vec.end());
print_elements(vec, "after erase()");
vec.erase(remove(vec.begin(), vec.end(), 1), vec.end());
print_elements(vec, "after erase() and remove()");
return 0;
}
remove()删除掉元素,返回一个新的终点,但是群集中的的元素数量并没改变,群集的end()也没改变.
未被覆盖的元素和原来的群集保持一致.
另外应尽可能的使用++itor,因为它比itor++效率要高,后者需要一个额外的临时对象来保存itor原来的值并将它返回