输入n个数使用set排序,从大到小输出c++
时间: 2024-09-12 16:09:24 浏览: 45
C++ set的使用方法详解
在C++中,可以使用标准库中的`set`容器来对输入的n个数进行排序,并输出。由于`set`默认是按照从小到大的顺序存储元素的,如果要从大到小输出,需要做一些额外的处理。以下是一个示例代码,展示如何实现这个功能:
```cpp
#include <iostream>
#include <set>
#include <algorithm>
#include <iterator>
int main() {
int n;
std::cout << "请输入要排序的数字的个数: ";
std::cin >> n;
std::set<int> numbers; // 默认从小到大排序的set
std::cout << "请输入 " << n << " 个数字:" << std::endl;
for (int i = 0; i < n; ++i) {
int num;
std::cin >> num;
numbers.insert(num); // 插入数字到set中
}
// 将set中的元素复制到vector中,以便进行反向排序
std::vector<int> sortedNumbers(numbers.begin(), numbers.end());
// 使用标准库算法sort,结合lambda表达式,对vector进行反向排序
std::sort(sortedNumbers.begin(), sortedNumbers.end(), [](int a, int b) {
return a > b; // 从大到小排序
});
std::cout << "从大到小排序的结果是:" << std::endl;
// 反向迭代输出
for (auto it = sortedNumbers.rbegin(); it != sortedNumbers.rend(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
```
这段代码首先读取用户想要输入的数字个数,然后读取每个数字并存入`set`中。由于`set`是基于红黑树实现的,它能够保证元素的有序性,但是默认是升序。接着,代码将`set`中的元素复制到`vector`中,并使用`sort`函数结合lambda表达式来实现反向排序。最后,代码使用反向迭代器(`rbegin()`和`rend()`)来反向输出排序后的结果。
阅读全文