vector怎么过滤相同的值
时间: 2023-05-10 21:00:36 浏览: 208
vector是一种能够容纳不同类型的元素的动态数组。有时我们需要从vector中移除相同的值,以达到数据整理、去除重复元素等目的。
首先,可以用STL算法库提供的unique函数来去除vector中的重复元素。unique函数会将相邻的重复元素仅保留一次,并返回一个指向新的逻辑末尾的迭代器。这个函数只能去除相邻的重复元素,因此需要先将原vector进行排序,再使用unique函数。
例如:
```C++
vector<int> vec{1, 2, 3, 2, 5, 3};
sort(vec.begin(), vec.end()); // 先排序
auto last = unique(vec.begin(), vec.end()); // 去重
vec.erase(last, vec.end()); // 删除不需要的元素
```
这段代码先将原vector进行排序,然后使用unique函数去除相邻的重复元素,并返回新的逻辑末尾迭代器。然后再使用erase函数将不需要的元素删除。
另一种方法是自己编写去除重复元素的函数,方法如下:
```C++
void removeDuplicates(vector<int>& vec)
{
set<int> uniqueSet(vec.begin(), vec.end());
vec.assign(uniqueSet.begin(), uniqueSet.end());
}
```
这段代码先创建了一个set类型的uniqueSet,并将原vector中的所有元素放入uniqueSet中。由于set只能容纳不同的元素,因此能够保证所有的重复元素被去除。最后使用assign函数将去重后的uniqueSet赋值给vec。
这两种方法都可以实现去除vector中的重复元素,选择哪种方法视具体情况而定。
阅读全文