c++ unique
时间: 2023-08-16 22:12:50 浏览: 37
在C++中,`std::unique`是一个算法,它可以用于在容器中移除相邻的重复元素。它接受两个迭代器参数,表示容器的范围。以下是一个示例用法:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> nums {1, 2, 2, 3, 3, 3, 4, 5, 5};
// 移除相邻的重复元素
auto it = std::unique(nums.begin(), nums.end());
// 使用erase方法擦除重复元素之后的部分
nums.erase(it, nums.end());
// 打印结果
for (int num : nums) {
std::cout << num << " ";
}
return 0;
}
```
输出结果为:`1 2 3 4 5`。`std::unique`将相邻的重复元素移动到容器的末尾,并返回指向第一个被移动的重复元素之后位置的迭代器。通过使用`erase`方法,我们可以擦除这些重复元素。
相关问题
c++unique
`std::unique` 是 C++ STL 中的一个算法函数,它可以用来移除容器中的重复元素,并返回指向新的逻辑结尾的迭代器。它的声明如下:
```c++
template<class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last);
template<class ForwardIt, class BinaryPredicate>
ForwardIt unique(ForwardIt first, ForwardIt last, BinaryPredicate p);
```
其中,`unique` 的第一个版本使用 `operator==` 比较元素是否相等,第二个版本使用二元谓词 `p` 进行比较。
`std::unique` 的使用方法如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> v{1,2,2,3,4,4,3};
auto last = std::unique(v.begin(), v.end());
for (auto i = v.begin(); i != last; ++i) {
std::cout << *i << " ";
}
std::cout << '\n';
}
```
输出结果为: `1 2 3 4`。可以看到,所有重复的元素都被移除了。
c++unique函数
C++的`std::unique`函数是标准库中的一个算法函数,用于在容器中移除相邻的重复元素,只保留其中一个副本。它可以应用于任何支持双向迭代器的容器,如`std::vector`、`std::list`等。
`std::unique`函数的声明如下:
```cpp
template <class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last);
```
其中`first`和`last`是迭代器,表示容器中要进行处理的元素范围。该函数返回一个指向新的范围末尾的迭代器,移除的重复元素将被移到容器末尾并被覆盖。
下面是一个示例代码,展示了如何使用`std::unique`函数:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {1, 2, 2, 3, 3, 3, 4, 5, 5};
// 移除相邻的重复元素
auto it = std::unique(nums.begin(), nums.end());
// 调整容器大小,移除被覆盖的元素
nums.erase(it, nums.end());
// 输出结果
for (int num : nums) {
std::cout << num << " ";
}
return 0;
}
```
运行以上代码,输出结果为:
```
1 2 3 4 5
```
注意,`std::unique`函数只能移除相邻的重复元素,如果容器中存在非相邻的重复元素,需要先进行排序,再使用`std::unique`函数进行去重。