事象
VScodeのデバッガを利用して、priority_queueに対してpush()したときに、ソートされる場合とされない場合があります。
■更新されない場合(13行目のステートメントのpushで更新)
■更新される場合(15行目のステートメントのpushで更新)
質問事項
- priority_queueはクラスとは違うため、どのように要素を出力したらよいのか教えてほしい。
//for (int i = 0;i < Q.size();i++) printf("%d des",Q[i]);
だとエラーに当然なりました。
- priority_queueのソートタイミングがいつなのか知りたいが、(デバッガでも確認できず、)知りたい。
#### コード
C++
1#include <iostream> 2#include <queue> 3#include <vector> 4#include <functional> 5using namespace std; 6 7int main() { 8 // 例 1: Q に色々な操作を行う(x1 = 116, x2 = 110, x3 = 122, x4 = 2 となります) 9 priority_queue<int, vector<int>, greater<int>> Q; 10 Q.push(116); // この時点で、小さい順に {116} 11 //for (int i = 0;i < Q.size();i++) printf("%d des",Q[i]); 12 Q.push(145); // この時点で、小さい順に {116, 145} 13 Q.push(122); // この時点で、小さい順に {116, 122, 145} 14 int x1 = Q.top(); 15 Q.push(110); // この時点で、小さい順に {110, 116, 122, 145} 16 int x2 = Q.top(); 17 Q.pop(); // この時点で、小さい順に {116, 122, 145} 18 Q.pop(); // この時点で、小さい順に {122, 145} 19 int x3 = Q.top(); 20 int x4 = Q.size(); 21 22 cout << x1 << " " << x2 << " " << x3 << " " << x4 << endl; 23 return 0; 24}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 09:41
2020/07/07 09:52
2020/07/07 10:03 編集
2020/07/07 10:48
2020/07/07 11:58 編集