vector有去重函数吗
时间: 2025-06-29 21:24:42 浏览: 12
### C++ Vector 去重方法
#### 使用 `sort` 和 `unique`
一种常见的方式是对向量先进行排序,使得相同的元素聚集在一起,之后使用 `std::unique` 来识别连续的重复项并将其移动到容器的一端。最后通过 `erase` 移除这些被标记为多余的元素[^2]。
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int myints[] = {1, 2, 3, 1, 1};
int len = sizeof(myints) / sizeof(int);
vector<int> vec(myints, myints + len);
// 对vec进行升序排列
sort(vec.begin(), vec.end());
// 将不唯一的元素移到末尾,并返回指向第一个多余位置迭代器
auto new_end = unique(vec.begin(), vec.end());
// 删除从new_end开始到最后的所有元素
vec.erase(new_end, vec.end());
for (int x : vec)
cout << x << ",";
return 0;
}
```
此代码片段展示了如何组合使用 `sort`, `unique` 及 `erase` 函数来实现去重目的。
#### 利用集合特性
另一种更简洁的方法是借助于其他STL容器如 `set` 或者 `unordered_set` 的自动唯一化性质来进行转换。这种方法不需要预先对原始序列做任何处理就可以直接获得无重复版本的数据集[^3]。
```cpp
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main(){
vector<int> original = {1, 2, 3, 1, 1};
set<int> s(original.begin(), original.end());
vector<int> no_duplicates(s.begin(), s.end());
for(auto& elem : no_duplicates){
cout<<elem<<",";
}
return 0;
}
```
这段程序说明了怎样快速地把一个可能存在重复值的整数型向量转化为仅有单一实例存在的新向量。
阅读全文
相关推荐


















