【发布时间】:2016-04-04 01:49:42
【问题描述】:
我对 C++ 相当陌生,我试图在 C++ 中使用优先级队列 STL 来实现最小堆。我环顾网络,偶然发现了一个代码,即我在底部添加的链接。
我了解向量是如何工作的,我也了解函子是什么,但我不明白 'return i>j' 如何在从最小到最大排列元素中发挥作用。
我会把代码贴在这里。
#include <queue>
#include <iostream>
using namespace std;
struct comparator {
bool operator()(int i, int j) {
return i > j;
}
};
int main(int argc, char const *argv[])
{
priority_queue<int, std::vector<int>, comparator> minHeap;
minHeap.push(10);
minHeap.push(5);
minHeap.push(12);
minHeap.push(3);
minHeap.push(3);
minHeap.push(4);
while (!minHeap.empty()) {
cout << minHeap.top() << " ";
minHeap.pop();
}
return 0;
}
有人可以跟踪程序的执行吗?在过去的几个小时里,我一直试图了解这个程序是如何工作的,但没有成功。
我从here得到代码
【问题讨论】:
-
你有可以用来跟踪执行的调试器吗?
-
如果你想跟踪程序的执行,每个编译器都有一个相关的调试器,你自己可以使用一个工具来单步调试代码,看看它是如何工作的,一步一步步。如果您花一些时间学习如何使用调试器来单步调试您已编译的代码,您将对自己大有帮助。遗憾的是,stackoverflow.com 的许多发帖者都非常缺乏这项技能。
-
我是编程新手,还没有学会如何使用调试器。不过我很快就会学会的。
标签: c++ data-structures stl