一组数据,要求去重 用C++写
时间: 2024-03-16 22:45:24 浏览: 10
您可以使用STL库中的set来实现去重功能。set是一个有序且不重复的容器,当你向set中插入元素时,set会自动帮你去重并按照升序排序。
以下是一个简单的C++代码示例:
```cpp
#include <iostream>
#include <set>
int main() {
std::set<int> s;
int arr[] = {1, 2, 3, 4, 4, 5, 5, 6, 7, 7};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++) {
s.insert(arr[i]);
}
for (auto it = s.begin(); it != s.end(); it++) {
std::cout << *it << " ";
}
return 0;
}
```
输出结果为:
```
1 2 3 4 5 6 7
```
在上面的代码中,我们首先定义了一个set<int>类型的变量s。然后,我们通过一个for循环将数组中的元素一个个插入到set中。由于set会自动去重,因此最终set中的元素就是去重后的结果。
最后,我们通过另一个for循环遍历set中的元素并输出它们。
相关问题
用c++语言写程序:从键盘输入数据的个数n及这n个数(包含重复数据),要求删除其中的重复数据,并输出去重后的数据。要求:用指针操作数组。
下面是一个使用指针操作数组的 C++ 代码示例,可以从键盘输入数据的个数 n 及这 n 个数(包含重复数据),要求删除其中的重复数据,并输出去重后的数据。
```c++
#include <iostream>
using namespace std;
// 删除重复元素,并返回新数组的长度
int removeDuplicates(int* arr, int n) {
int* p = arr;
int* q = arr + 1;
while (q < arr + n) {
if (*p != *q) {
*(++p) = *q;
}
q++;
}
return p - arr + 1;
}
int main() {
int n;
cout << "请输入数据的个数:";
cin >> n;
int* arr = new int[n];
cout << "请输入 " << n << " 个整数:" << endl;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int len = removeDuplicates(arr, n);
cout << "去重后的数据为:";
for (int i = 0; i < len; i++) {
cout << arr[i] << " ";
}
cout << endl;
delete[] arr;
return 0;
}
```
运行示例:
```
请输入数据的个数:7
请输入 7 个整数:
1 2 3 2 4 1 5
去重后的数据为:1 2 3 4 5
```
阿伟学长在开发一款游戏, 他希望玩家已经获得的道具会降低爆率, 避免玩家获得太多重复的道具 但玩家背包中道具是乱序且不确定的, 为了减小判断的运算量, 需要先对数据进行去重. 设计一个C++程序, 输入数据数量N, 以及N个整数Ni. 将该组数据去重后打印 (1<N<100, 0 <= Ni <= MAX_INT)
好的,同样可以使用哈希表来实现去重,以下是使用 C++ 实现的程序代码:
```cpp
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
int n;
unordered_set<int> hash_set;
cin >> n;
for (int i = 0; i < n; i++) {
int ni;
cin >> ni;
if (hash_set.find(ni) == hash_set.end()) {
hash_set.insert(ni);
cout << ni << endl;
}
}
return 0;
}
```
使用 unordered_set 来实现哈希表,它的 find() 方法和 insert() 方法可以实现查找和插入操作。如果某个数字已经在哈希表中,则不再重复打印。
希望这个程序可以帮助到你。