用c++的stl写输入n个数,按照从大到小进行优先队列排序
时间: 2024-09-12 07:09:25 浏览: 48
在C++中,STL(标准模板库)提供了一个优先队列容器适配器,它可以对元素进行排序,其默认行为是按照“最大优先级”原则,即优先队列的顶部始终保持最大元素。因此,如果你想要得到一个从大到小的排序结果,你可以创建一个最大优先队列。
下面是使用C++的STL实现输入n个数,然后按照从大到小的顺序进行优先队列排序的示例代码:
```cpp
#include <iostream>
#include <queue>
#include <vector>
#include <functional> // for std::greater
int main() {
int n;
std::cout << "请输入数字的个数: ";
std::cin >> n;
std::priority_queue<int, std::vector<int>, std::greater<int>> maxHeap;
std::cout << "请输入 " << n << " 个数:" << std::endl;
for (int i = 0; i < n; ++i) {
int value;
std::cin >> value;
maxHeap.push(value);
}
std::cout << "按照从大到小的顺序输出: " << std::endl;
while (!maxHeap.empty()) {
std::cout << maxHeap.top() << " ";
maxHeap.pop();
}
std::cout << std::endl;
return 0;
}
```
在这段代码中,我们使用了`std::priority_queue`,其第三个模板参数`std::greater<int>`确保了队列中元素的最大值始终位于顶部。首先,我们读取用户输入的数字个数n,然后通过循环接收用户输入的每个数字,并将其添加到优先队列中。最后,我们通过不断弹出队列顶部的元素来按从大到小的顺序输出这些数字。
阅读全文