こんなの?
C++
1#include <iostream>
2#include <queue>
3
4struct record {
5 int ID1;
6 int ID2;
7 int value;
8};
9
10inline bool operator<(const record& x, const record& y) {
11 return x.value > y.value;
12}
13
14std::ostream& operator<<(std::ostream& stream, const record& r) {
15 return stream << r.ID1 << '/' << r.ID2 << '/' << r.value;
16}
17
18int main() {
19 std::priority_queue<record> q;
20 for ( int i=0; i < 30; ++i ) {
21 record r;
22 r.ID1 = i % 7;
23 r.ID2 = i % 5;
24 r.value = i % 3;
25 q.push(r);
26 }
27
28 while ( !q.empty() ) {
29 std::cout << q.top() << std::endl;
30 q.pop();
31 }
32}
[追記] 比較関数を与えた版
C++
1#include <iostream>
2#include <queue>
3
4struct record {
5 int ID1;
6 int ID2;
7 int value;
8};
9
10struct greater_record {
11 bool operator()(const record& x, const record& y) const {
12 return x.value > y.value;
13 }
14};
15
16std::ostream& operator<<(std::ostream& stream, const record& r) {
17 return stream << r.ID1 << '/' << r.ID2 << '/' << r.value;
18}
19
20int main() {
21 std::priority_queue<record, std::vector<record>, greater_record> q;
22 for ( int i=0; i < 30; ++i ) {
23 record r;
24 r.ID1 = i % 7;
25 r.ID2 = i % 5;
26 r.value = i % 3;
27 q.push(r);
28 }
29
30 while ( !q.empty() ) {
31 std::cout << q.top() << std::endl;
32 q.pop();
33 }
34}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/22 11:45
2021/02/22 11:47
2021/02/22 11:54
2021/02/24 09:10 編集
2021/02/25 00:28 編集
2021/02/25 04:37