将上面的代码中的去重改为用set的方法
时间: 2024-03-24 21:37:26 浏览: 50
对python读写文件去重、RE、set的使用详解
使用 set 容器可以更方便地去除重复元素,因为 set 本身就是一个集合容器,可以自动去重。下面是使用 set 容器进行去重的代码:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> nums(n);
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
sort(nums.begin(), nums.end()); // 排序
set<int> s(nums.begin(), nums.end()); // 去重
cout << "不同的整数个数为:" << s.size() << endl;
cout << "不同的整数为:";
for (auto it = s.begin(); it != s.end(); it++) {
cout << *it << " ";
}
cout << endl;
return 0;
}
```
这段代码首先定义了变量 n,表示需要读入的整数的个数,然后使用 cin 读入 n 的值。
接着,定义了一个 vector<int> 类型的 nums 容器,用于存储 n 个整数。在定义容器时,需要指定容器的大小为 n,因为 vector 是动态数组,需要提前分配内存空间。
使用 for 循环将 n 个整数读入 nums 容器中,循环变量 i 从 0 到 n-1,每次读入一个整数,将其存储到 nums[i] 中。
最后,调用 sort() 函数对 nums 容器中的元素进行排序,sort() 函数的参数为容器的起始和结束地址,即 nums.begin() 和 nums.end(),表示对整个容器进行排序。sort() 函数的默认排序方式是升序排序,即从小到大排序。
排序后,将 nums 容器中的元素构造一个 set<int> 容器 s,这样就可以自动去重。set 容器内部是按照元素的值从小到大排列的,因此无需再进行排序。
最后,使用 set 的 size() 函数输出不同的整数个数,使用 set 的迭代器遍历 s 容器中的元素,并输出每个元素的值。注意,set 的迭代器是一个 const_iterator,即不允许修改元素的值,因此需要使用 *it 来获取元素的值。
阅读全文