teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/02/25 00:27

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -33,4 +33,42 @@
33
33
  q.pop();
34
34
  }
35
35
  }
36
+ ```
37
+
38
+ [追記] 比較関数を与えた版
39
+ ```C++
40
+ #include <iostream>
41
+ #include <queue>
42
+
43
+ struct record {
44
+ int ID1;
45
+ int ID2;
46
+ int value;
47
+ };
48
+
49
+ struct greater_record {
50
+ bool operator()(const record& x, const record& y) const {
51
+ return x.value > y.value;
52
+ }
53
+ };
54
+
55
+ std::ostream& operator<<(std::ostream& stream, const record& r) {
56
+ return stream << r.ID1 << '/' << r.ID2 << '/' << r.value;
57
+ }
58
+
59
+ int main() {
60
+ std::priority_queue<record, std::vector<record>, greater_record> q;
61
+ for ( int i=0; i < 30; ++i ) {
62
+ record r;
63
+ r.ID1 = i % 7;
64
+ r.ID2 = i % 5;
65
+ r.value = i % 3;
66
+ q.push(r);
67
+ }
68
+
69
+ while ( !q.empty() ) {
70
+ std::cout << q.top() << std::endl;
71
+ q.pop();
72
+ }
73
+ }
36
74
  ```