gpt4 book ai didi

c++ - 打印优先队列

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:45 25 4
gpt4 key购买 nike

我试图在 C++ 中打印 STL priority_queue,但在打印队列的所有元素时遇到问题。

priority_queue<Job, vector<Job>, greater<Job>> q = pq;
for(int i = 0; i <= q.size(); i++) {
cout << q.top() << "\n";
q.pop();
}

但是,当列表中有一个或两个元素时使用此代码没问题,但是一旦我输入三个或更多元素,它就会切断要打印的最后一项。我不太确定为什么会这样,但这让我困惑了一段时间。

最佳答案

For 循环并不真正用于条件为“动态”的情况。我的意思是:i <= q.size()当然会在每次迭代时进行评估,但是 q.size()也在每次迭代中发生变化。正确使用 for 循环并非不可能,而是一个 while更自然:

while (! q.empty() ) {
cout << q.top() << "\n";
q.pop();
}

您的代码是错误的,因为您增加了 i在每次迭代中同时q.size()每次迭代都会减少。

关于c++ - 打印优先队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com