c++ vector数组怎么去重复
时间: 2024-08-26 20:02:40 浏览: 123
在 C++ 中,如果你想要从 `std::vector` 数组中去除重复元素,可以采用多种方法。这里提供两种常见的方式:
1. **使用标准算法** - `std::unique` 和 `std::remove_if` 结合:
```cpp
#include <algorithm>
#include <vector>
std::vector<int> vec = {1, 2, 2, 3, 4, 4, 5};
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
```
这段代码首先使用 `std::unique` 函数找到连续重复元素的第一个独特位置,然后使用 `erase` 删除后续的重复项。
2. **自定义函数和范围-based for循环**:
```cpp
#include <vector>
#include <unordered_set>
bool is_unique(int val, std::vector<int>& vec) {
return std::find(vec.begin(), vec.end(), val) == vec.end();
}
void remove_duplicates(std::vector<int>& vec) {
vec.erase(std::remove_if(vec.begin(), vec.end(), [&](int val) { return !is_unique(val, vec); }), vec.end());
}
```
这个方法创建了一个辅助函数 `is_unique`,判断元素是否已经存在于向量中,然后使用 range-based for 循环配合 `std::remove_if` 删除重复值。
注意,上述代码都会改变原向量 `vec`。如果你想保持原向量不变,可以先复制一份再操作:
```cpp
std::vector<int> vec = {...};
std::vector<int> unique_vec(vec);
// 或者
unique_vec = vec;
// 然后再用上面的方法去重。
```
阅读全文