如何在C++中创建一个保持数组元素原始顺序的去重函数实现?
时间: 2024-10-24 17:18:37 浏览: 15
C++两个一维数组相加求和
在C++中,如果你想创建一个函数来去除数组中的重复元素并保持原始顺序,可以使用`std::unordered_set`或者自定义哈希集合来存储已经遇到过的元素。这里是一个简单的实现示例:
```cpp
#include <iostream>
#include <unordered_set>
// 去重并保持原始顺序的辅助函数
template<typename T>
void removeDuplicates(T arr[], int n) {
std::unordered_set<T> uniqueSet;
for (int i = 0; i < n; ++i) {
if (uniqueSet.find(arr[i]) == uniqueSet.end()) {
// 如果元素不在集合中,添加到集合和输出结果
uniqueSet.insert(arr[i]);
std::cout << arr[i] << " ";
}
}
}
int main() {
int arr[] = {1, 3, 2, 1, 5, 6, 4, 2};
int size = sizeof(arr) / sizeof(arr[0]);
removeDuplicates(arr, size);
return 0;
}
```
在这个例子中,`removeDuplicates`函数遍历输入数组,如果元素首次遇到就将其插入到`unordered_set`中,并打印出来。由于`unordered_set`内部实现了唯一性的保证,所以重复的元素只会被处理一次。
阅读全文