讲解一下c++中的unique函数
时间: 2024-02-15 21:21:35 浏览: 96
在C++中,`std::unique()`函数是用于在序列中移除连续的重复元素的算法函数。它的作用是将重复的元素移到序列的末尾,并返回指向不重复序列的尾后迭代器。
`std::unique()`函数的声明如下:
```cpp
template<class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last);
```
其中,`first`和`last`是表示序列范围的迭代器。函数会对从`first`到`last`范围内的元素进行去重操作。
`std::unique()`函数的使用方法如下:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> numbers = {1, 1, 2, 2, 3, 4, 4, 5, 5};
// 使用 std::unique() 去除连续重复元素
auto last = std::unique(numbers.begin(), numbers.end());
// 输出不重复序列
for (auto it = numbers.begin(); it != last; ++it) {
std::cout << *it << " ";
}
return 0;
}
```
以上代码会输出:`1 2 3 4 5`。
`std::unique()`函数会将连续重复的元素放置在容器的末尾,并返回指向不重复序列的尾后迭代器。你可以使用返回的迭代器来确定不重复序列的范围。使用`std::unique()`函数时,注意要确保序列已经按照需要进行排序,因为它只会移除相邻的重复元素。
需要注意的是,`std::unique()`函数只能去除连续重复的元素,对于非连续重复的元素无法处理。如果需要移除所有重复元素,可以先对序列进行排序,然后使用`std::unique()`函数去除连续重复元素,最后使用`std::erase()`函数擦除多余的元素。
阅读全文