【发布时间】:2018-04-09 07:24:14
【问题描述】:
有什么问题?
当我使用 STL 的优先级队列时,我想使用最小堆,所以我使用如下代码。
它适用于默认选项,但它不适用于“更大的选项”。
它总是像上图一样排列。我完全不知道为什么会这样。
struct node {
string code;
int fre;
bool operator<(const node& rhs) const {
return fre < rhs.fre;
}
bool operator>(const node& rhs) const {
return fre > rhs.fre;
}
};
std::priority_queue<node, vector<node>, greater<node>> q;
std::map<node,int> huffman_tree;
int main(void)
{
int f;
for (int i = 1; i <= n; i++) {
string c;
std::cin >> c >> f;
node huffman = { c,f };
q.push(huffman);
}
q.pop();
return 0;
}
【问题讨论】:
-
那么你真正的问题又是什么?
-
与你的问题无关,但你对输入有一个奇怪的 C 和 C++。为什么使用
scanf和字符数组,而不是更安全的std::cin和>>运算符(用于输入)和std::string(用于字符串)? -
“不工作”和“编译器发生错误”不是有用的问题陈述。 究竟会发生什么?发布确切的错误消息。
-
更多相关问题请read about how to ask good questions。然后编辑您的问题,告诉我们什么问题出在哪里。 如何“它不工作”。也请阅读idownvotedbecau.se/itsnotworking
-
你怎么知道它不起作用?你没想到会发生什么?
标签: c++ priority-queue min-heap