vector去除重复元素个数
时间: 2024-10-09 11:02:33 浏览: 40
在C++中,如果你有一个`std::vector`容器并想要计算其中重复元素的数量,可以采用多种方法。一种常见的方式是利用`std::unordered_set`,因为它不允许有重复元素,所以你可以先将`vector`转换成`unordered_set`,然后比较两个集合的大小差异:
```cpp
#include <vector>
#include <unordered_set>
size_t count_duplicates(const std::vector<int>& vec) {
std::unordered_set<int> unique_elements(vec.begin(), vec.end());
return vec.size() - unique_elements.size();
}
```
这个函数会返回`vec`中独特元素的数量,重复的元素已经从计数中减去。
如果你想直接在原地操作并保留`vector`,可以使用`std::unique`算法配合`std::remove_if`:
```cpp
size_t count_duplicates(const std::vector<int>& vec) {
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
return vec.size();
}
```
这将删除连续的重复项,并返回新的元素数量,即非重复元素的数量。
阅读全文