C++数组去重可通过多种方法实现:1. 使用std::set自动排序去重;2. 结合std::sort与std::unique原地去重;3. 手动遍历适合小数组;4. std::unordered_set哈希去重保序高效。

在C++中,数组本身是固定大小的静态结构,不能直接“删除”元素。但可以通过一些方法实现数组去重的效果,即保留唯一元素并重新组织数据。以下是几种常见的C++数组去重方法。
步骤:
#include <iostream>
#include <set>
#include <vector>
int main() {
int arr[] = {5, 2, 8, 2, 5, 3};
int n = sizeof(arr) / sizeof(arr[0]);
std::set<int> unique_set(arr, arr + n);
std::vector<int> result(unique_set.begin(), unique_set.end());
for (int x : result) {
std::cout << x << " ";
}
return 0;
}
输出:2 3 5 8
说明:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec = {5, 2, 8, 2, 5, 3};
std::sort(vec.begin(), vec.end());
auto last = std::unique(vec.begin(), vec.end());
vec.erase(last, vec.end());
for (int x : vec) {
std::cout << x << " ";
}
return 0;
}
输出:2 3 5 8
思路:
#include <iostream>
#include <vector>
bool contains(const std::vector<int>& vec, int value) {
for (int x : vec) {
if (x == value) return true;
}
return false;
}
int main() {
int arr[] = {5, 2, 8, 2, 5, 3};
int n = sizeof(arr) / sizeof(arr[0]);
std::vector<int> result;
for (int i = 0; i < n; ++i) {
if (!contains(result, arr[i])) {
result.push_back(arr[i]);
}
}
for (int x : result) {
std::cout << x << " ";
}
return 0;
}
输出顺序可能为:5 2 8 3(保持原始顺序)
做法:
#include <iostream>
#include <unordered_set>
#include <vector>
int main() {
int arr[] = {5, 2, 8, 2, 5, 3};
int n = sizeof(arr) / sizeof(arr[0]);
std::vector<int> result;
std::unordered_set<int> seen;
for (int i = 0; i < n; ++i) {
if (seen.find(arr[i]) == seen.end()) {
seen.insert(arr[i]);
result.push_back(arr[i]);
}
}
for (int x : result) {
std::cout << x << " ";
}
return 0;
}
输出:5 2 8 3(保持首次出现顺序)
基本上就这些常见方法。根据是否需要保持顺序、是否允许排序、性能要求等选择合适方案。std::unique 配合排序适合大多数情况;unordered_set 更高效且保序;set 自动排序去重;手动方法灵活但慢。实际开发中推荐使用 STL 算法提高效率和可读性。
以上就是c++++中如何删除数组中的重复元素_c++数组去重方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号