remove 的声明:
1 template2 ForwardIterator remove( ForwardIterator first, ForwardIterator last, const T & value );
remove 接收指定它操作的元素区间的一对迭代器,不接收一个容器,所以不知道作用与哪个容器
remove 并不 “真的” 删除东西,因为它做不到
从容器中除去一个元素,唯一的方法是调用那个容器的一个成员函数,几乎都是 erase 的某种形式
remove 移动指定区间中的元素直到所有 “不删除” 元素在区间的开头(相对位置和原来它们的一样)
它返回一个指向最后一个的下一个 “不删除的” 元素的迭代器,返回值是区间的 “新逻辑终点”
如果真的要删除东西的话,应该在 remove 后面接上 erase
1 vector v;2 v.erase( remove( v.begin(), v.end(), 99 ), v.end() );3 cout << v.size();
把 remove 的返回值作为 erase 区间形式第一个实参传递,是个惯用法。
remove-list,整合到 list 的成员函数 remove 中
1 list li; // 建立一个 list2 li.remove(99); // 删除所有等于 99 的元素,3 // STL 中唯一的一个名叫 remove 又能从容器中去除元素的函数
在关联容器中类似的 remove_erase 函数叫 erase
同理,类似remove 算法:remove_if 和 unique 要删除东西
成对调用 unique 和 erase, unique 在 list 中类似于remove