怎么使用erase删除数组中重复元素只保留一个
时间: 2024-09-09 17:03:46 浏览: 109
在C++中,如果你想从数组中删除重复元素并保留唯一值,可以使用`std::unique`函数结合`std::remove_copy_if`。这两个算法都是C++标准库中的容器算法,通常配合范围迭代器一起使用。
假设有一个整数数组`arr`,你可以按照以下步骤操作:
```cpp
#include <algorithm>
#include <iterator>
// 假设 arr 是你的原始数组
int arr[] = {1, 2, 2, 3, 4, 4, 5};
size_t original_size = sizeof(arr) / sizeof(arr[0]);
// 使用 unique 函数去除连续的重复元素
auto deduplicated_end = std::unique(arr, arr + original_size);
// 然后使用 remove_copy_if 和已知范围 [deduplicated_end, arr + original_size) 删除其他非连续的重复元素
std::remove_copy_if(deduplicated_end, arr + original_size, arr, arr + original_size); // 这里的第一个和第三个参数实际上是重叠的
// 更新新的大小,移除所有重复元素后的实际长度
size_t new_size = deduplicated_end - arr;
// 如果你想保持原始数组长度不变,需要复制新元素到原数组的结尾
if (new_size < original_size) {
std::copy_n(arr, new_size, arr);
}
// 新的数组大小
cout << "New array size: " << new_size << "\n";
阅读全文