回答編集履歴
1
追記
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
|
```
|