算法remove( )、remove_if( )的返回值是什么、使用方法?remove是移除,如何真正删除?
时间: 2024-02-23 10:59:04 浏览: 68
`remove()`和`remove_if()`都是C++ STL中的算法,用于移除容器中满足一定条件的元素。这两个算法的返回值是一个指向最后一个未被移除元素的后继迭代器的指针,可以用来确定容器中有效元素的新结尾。
`remove()`函数的使用方法如下:
```c++
template<class ForwardIt, class T>
ForwardIt remove(ForwardIt first, ForwardIt last, const T& value);
```
其中,`first`和`last`分别是容器中要移除元素的范围,`value`是要移除的元素的值。该函数会将容器中等于`value`的元素移动到容器的末尾,并返回一个指向新结尾的迭代器。
`remove_if()`函数的使用方法如下:
```c++
template<class ForwardIt, class UnaryPredicate>
ForwardIt remove_if(ForwardIt first, ForwardIt last, UnaryPredicate p);
```
其中,`first`和`last`分别是容器中要移除元素的范围,`p`是一个一元谓词,用于判断哪些元素需要被移除。该函数会将容器中满足谓词`p`的元素移动到容器的末尾,并返回一个指向新结尾的迭代器。
需要注意的是,`remove()`和`remove_if()`函数并不会真正删除元素,它们只是将要删除的元素移动到容器的末尾,并返回一个新结尾的迭代器。如果需要真正删除元素,可以使用容器的`erase()`函数,例如:
```c++
vector<int> vec = {1, 2, 3, 4, 5};
auto it = remove(vec.begin(), vec.end(), 3); // 将值为3的元素移动到末尾
vec.erase(it, vec.end()); // 真正删除末尾的元素
```
这样就可以将容器中所有值为3的元素删除。
阅读全文