std::remove ,std::copy_if ,std::partition,std::unique,std::unique_copy的用法
时间: 2023-10-17 15:05:40 浏览: 196
这些都是C++标准库中的算法函数,具体用法如下:
1. std::remove
这个函数可以用于从一个容器中移除指定值,它的用法如下:
```
template< class ForwardIt, class T >
ForwardIt remove( ForwardIt first, ForwardIt last, const T& value );
```
其中,`first` 和 `last` 分别表示迭代器的起始和结束位置,`value` 表示要移除的值。该函数返回指向新的结束位置的迭代器,被移除的元素仍然存在于容器中,只是处于未定义状态,需要使用 erase 函数删除。
2. std::copy_if
这个函数可以用于将满足指定条件的元素拷贝到目标容器中,它的用法如下:
```
template< class InputIt, class OutputIt, class UnaryPredicate >
OutputIt copy_if( InputIt first, InputIt last, OutputIt d_first, UnaryPredicate pred );
```
其中,`first` 和 `last` 分别表示迭代器的起始和结束位置,`d_first` 表示目标容器的起始位置,`pred` 是一个一元谓词,用于指定拷贝条件。
3. std::partition
这个函数可以用于将容器中满足指定条件的元素移动到容器的前面,不满足条件的元素移动到后面,它的用法如下:
```
template< class BidirectionalIt, class UnaryPredicate >
BidirectionalIt partition( BidirectionalIt first, BidirectionalIt last, UnaryPredicate pred );
```
其中,`first` 和 `last` 分别表示迭代器的起始和结束位置,`pred` 是一个一元谓词,用于指定移动条件。该函数返回一个迭代器,指向最后一个满足条件的元素之后的位置。
4. std::unique
这个函数可以用于移除相邻的重复元素,它的用法如下:
```
template< class ForwardIt >
ForwardIt unique( ForwardIt first, ForwardIt last );
```
其中,`first` 和 `last` 分别表示迭代器的起始和结束位置。该函数返回指向新的结束位置的迭代器,被移除的元素仍然存在于容器中,只是处于未定义状态,需要使用 erase 函数删除。
5. std::unique_copy
这个函数可以用于将相邻的重复元素去重后拷贝到目标容器中,它的用法如下:
```
template< class InputIt, class OutputIt >
OutputIt unique_copy( InputIt first, InputIt last, OutputIt d_first );
```
其中,`first` 和 `last` 分别表示迭代器的起始和结束位置,`d_first` 表示目标容器的起始位置。该函数返回指向新的结束位置的迭代器,被移除的元素仍然存在于容器中,只是处于未定义状态,需要使用 erase 函数删除。
阅读全文