使用c++ 去除数组中所有重复元素 排序,重复数组放在末尾
时间: 2024-10-09 14:09:23 浏览: 13
在C++中,去除数组中的重复元素并保持原顺序(即非重复元素仍然按照原有的顺序排列,重复元素排在最后),可以使用STL中的`std::unique`函数结合自定义比较函数。这里是一个简单的示例:
```cpp
#include <algorithm>
#include <vector>
// 自定义比较函数,用于判断是否为重复元素
bool compare(int a, int b) {
return std::prev(std::adjacent_find(arr, arr + n)) == arr + n;
}
void removeDuplicates(int arr[], int n) {
// 首先对数组进行排序,这里假设arr已经是有序的,如果不满足,需要额外添加排序步骤
if (n > 0 && !std::is_sorted(arr, arr+n)) {
std::sort(arr, arr+n);
}
// 使用std::unique找到连续的重复部分,并保留第一个出现的元素
arr = &*(std::unique(arr, arr+n, compare));
// 更新新的数组长度
n = std::distance(arr, arr+n);
// 确保复制原始数组到新位置,以便后续处理
std::copy_n(arr, n, arr);
}
int main() {
int input[] = {1, 2, 2, 3, 4, 4, 5};
int size = sizeof(input) / sizeof(input[0]);
removeDuplicates(input, size);
for (int i : input) {
std::cout << i << " ";
}