unique erase去重
时间: 2023-06-22 15:19:48 浏览: 213
unique erase去重是一种常见的操作,用于去除容器中的重复元素。这个操作通常是与STL中的vector、list、set、map等容器一起使用。
具体的实现方式是,先使用STL中的unique函数,将相邻的重复元素压缩到容器的末尾,然后再使用erase函数将重复的元素从容器中删除。
以下是一个vector去重的示例代码:
```c++
std::vector<int> vec = {1, 2, 3, 3, 4, 4, 5};
vec.resize(std::unique(vec.begin(), vec.end()) - vec.begin());
```
这个代码段中,unique函数将重复的元素压缩到容器的末尾,而resize函数将容器的大小缩减到不包含重复元素的大小。
相关问题
怎么用erase去重字符串
### C++ 使用 `erase` 方法去除字符串中的重复字符
为了实现去重功能,可以采用遍历的方法来检测并删除相邻的重复字符。下面是一个完整的例子:
```cpp
#include <iostream>
#include <string>
using namespace std;
void removeDuplicates(string& str) {
if (str.empty()) return;
auto newEnd = unique(str.begin(), str.end());
str.erase(newEnd, str.end());
}
int main() {
string s = "aabccbb";
cout << "Original String: " << s << endl;
removeDuplicates(s);
cout << "String after removing duplicates: " << s << endl;
}
```
这段代码利用了标准库算法 `unique()` 来重新排列输入范围内的元素,使得每个唯一值只出现一次,并返回指向新序列最后一个位置之后的一个迭代器。随后调用成员函数 `erase()` 删除多余部分[^1]。
对于更复杂的场景,比如不区分大小写的去重,则可以在比较之前转换成相同的形式再做处理;如果要去除非连续的重复项则需要先排序或者使用其他数据结构辅助完成操作。
用erase和unique实现数组去重
可以使用以下代码实现数组去重:
```
#include <algorithm>
#include <vector>
std::vector<int> uniqueArray(std::vector<int> arr) {
arr.erase(std::unique(arr.begin(), arr.end()), arr.end());
return arr;
}
```
这个函数接受一个整数类型的数组,使用 `std::unique` 函数将重复的元素移到数组末尾,然后使用 `std::vector::erase` 函数将这些重复元素从数组中删除。最后返回去重后的数组。
阅读全文