一组数据,要求去重 用C++写
时间: 2024-03-16 21:45:24 浏览: 53
您可以使用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++ 1,2,2,6,6,4,3,5,1这组数据,去重后按原来顺序输出
这组数据 `c++ 1,2,2,6,6,4,3,5,1` 看起来像是包含了字符 'c', ' ', '+', '1', '2', '2', '6', '6', '4', '3', '5', '1',以及一些可能是逗号、分隔符或其他非数字字符。如果你想从这个字符串中提取唯一的整数,并保持它们在原始字符串中的顺序,你可以按照以下步骤操作:
1. 首先,将字符串分割成单独的元素,通常可以假设非数字部分是空格、逗号等分隔符。
2. 创建一个集合(Set)来存储已经遇到过的唯一整数,集合的特点是不会包含重复元素。
3. 对于每个分割得到的元素,检查它是否是数字。
4. 如果是数字,将其转换为整数并添加到集合中。
5. 由于集合的迭代顺序不确定,为了保持原始顺序,我们可以使用一个列表(List)来保存唯一的整数,并按照添加的顺序遍历。
下面是一个简单的Python示例,因为C++的语法有所不同,这里提供的是Python代码:
```python
from collections import defaultdict
data = "c++ 1,2,2,6,6,4,3,5,1"
unique_nums = []
seen = defaultdict(list)
for item in data.split():
if item.isdigit(): # 检查是否为数字
num = int(item)
unique_nums.append(num) # 添加到列表
seen[num].append(item) # 保留原始位置信息
# 保持原始顺序输出
output = ""
for num, items in seen.items():
output += ", ".join(items) + " " * (len(unique_nums) - len(items)) + str(num) # 可能有额外的空间
output = output.strip(", ") + "\n" # 删除多余空格和开头的逗号
print(output)
```
用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
```
阅读全文