| 类别: 算法 | 组件类型: 函数 |
template <class ForwardIterator, class T>
ForwardIterator remove(ForwardIterator first, ForwardIterator last,
const T& value);
vector<int> V;
V.push_back(3);
V.push_back(1);
V.push_back(4);
V.push_back(1);
V.push_back(5);
V.push_back(9);
copy(V.begin(), V.end(), ostream_iterator<int>(cout, " "));
// The output is "3 1 4 1 5 9".
vector<int>::iterator new_end = remove(V.begin(), V.end(), 1);
copy(V.begin(), new_end, ostream_iterator<int>(cout, " "));
// The output is "3 4 5 9".
[1] “移除”的含义有点微妙。移除不会销毁任何迭代器,也不会改变first和last之间的距离。(它不可能做任何这样的事情。)因此,例如,如果V是一个 向量,remove(V.begin(), V.end(), 0)不会改变V.size(): V将包含与之前一样多的元素。移除返回一个迭代器,它指向从其中移除元素后得到的范围的末尾;因此,该迭代器后面的元素不再重要,可以丢弃。如果要从 序列 中移除元素,可以简单地擦除它们。也就是说,从 序列 中移除元素的合理方法是S.erase(remove(S.begin(), S.end(), x), S.end()).