[转] C/C++ STL之remove

来源:互联网 发布:深度卷积对抗生成网络 编辑:程序博客网 时间:2024/06/16 11:14

 

http://www.cppreference.com/wiki/cn/stl/algorithm/remove

语法:

    #include <algorithm>    forward_iterator remove( forward_iterator start, forward_iterator end, const TYPE& val );

remove 算法移除 [start,end) 范围之内的所有与 val 相等的元素。

此函数的返回值是一个迭代器,它指向不包含与 val 相等的元素的新序列的最后一个元素的后面。

注意remove的实现通常并不真的从 [start, end) 范围内移除元素;如果在一个容器上面调用remove,在调用之后此容器的长度并不会发生改变(只通过iterators,remove并不能影响容器的长度),所有元素还是留在容器内。然而,remove将所有被 “removed” 的元素放在容器的尾部,然后返回一个区分未被删除和被删除元素的迭代器。为了从一个容器删除元素,你应该调用此容器的 erase 方法删除从返回的迭代器(iterator)处开始的元素。这通常被联合起来称作:erase-remove idiom:

container.erase(remove(container.begin(), container.end(), val), container.end());

(container can be of type vector, string or deque)

 

remove 函数的时间复杂度是线性的(linear time)。

相关话题:remove_copy, remove_copy_if, remove_if, unique, unique_copy

 

原创粉丝点击