remove_copy
移除[first,last)之中所有与value相等的元素。然而并不是真正的从容器中删除那些元素,而是将结果复制到一个以result标示起始位置的容器身上。
remove_copy_if
移除[first,last)区间内所有仿函数pred核定为true的元素。它并不是真正从容器中删除那些元素,而是将结果复制到一个以result标示起始位置的容器身上。新容器可以和原容器重叠,但如果针对新容器实际给值时,超越了新容器的大小,会发生无法预期的结果。
///remove_copy///
{
int ia[] = { 0,1,2,3,4,5,6,6,6,7,8 };
vector<int> iv(begin(ia), end(ia));
//移除(但不删除)元素6,结果置于另一个区间
vector<int> iv2(12);
remove_copy(iv.begin(), iv.end(), iv2.begin(), 6);
for_each(iv2.begin(), iv2.end(), display<int>); cout << endl;
//0 1 2 3 4 5 7 8 (0 0 0 0)
}
///remove_copy_if///
{
int ia[] = { 0,1,2,3,4,5,6,6,6,7,8 };
vector<int> iv(begin(ia), end(ia));
//移除(但不删除)小于7的元素,结果置于另一个区间
vector<int> iv2(12);
remove_copy_if(iv.begin(), iv.end(), iv2.begin(), bind2nd(less<int>(), 7));
for_each(iv2.begin(), iv2.end(), display<int>); cout << endl;
//7 8 0 0 0 0 0 0 0 0 0 0
}