構造体にSTLを使用するにはどうすればよいpriority_queue
ですか?構造体に複数のデータ型があるプッシュ&ポップの図はありますか?
言う:struct thing { int a; char b;} glass[10];
。
注文に「inta」を使用してこの構造体をpriority_queueに配置するにはどうすればよいですか?
質問する
29521 次
4 に答える
34
これは、明確な理由なしに削除した元の質問に対するわずかに変更された回答です。オリジナルには、これを理解するのに十分な情報が含まれていましたが、ここで説明します。比較にforを使用する比較よりも少ない情報を提供しますint
。
あなたがする必要があるのは、厳密な弱順序との比較よりも少ないものを実装するファンクター、または同じものを実装するクラスのより少ない演算子を提供することです。この構造体は要件を満たしています。
struct thing
{
int a;
char b;
bool operator<(const thing& rhs) const
{
return a < rhs.a;
}
};
それから
std::priority_queue<thing> q;
thing stuff = {42, 'x'};
q.push(stuff);
q.push(thing{4242, 'y'}); // C++11 only
q.emplace(424242, 'z'); // C++11 only
thing otherStuff = q.top();
q.pop();
于 2013-03-24T18:02:08.267 に答える
6
のオーバーロード<
演算子thing
:
struct thing
{
int a;
char b;
bool operator<(const thing &o) const
{
return a < o.a;
}
};
priority_queue<thing> pq;
thing t1, t2, t3;
// ...
pq.push(t1);
pq.push(t2);
// ...
t3 = pq.top();
pq.pop();
于 2013-03-24T18:02:18.320 に答える
0
あなたはこのようにそれを行うことができます!
struct example{
int height;
int weight;
};
struct comp{
bool operator()(struct example a, struct example b){
//Sorting on the basis of height(Just for example)
return (a.height > b.height);
}
};
// And here comes your priority queue
priority_queue<struct example, vector<struct example>, comp> pq;
struct example your_obj;
pq.push(your_obj);
于 2021-12-05T18:00:05.013 に答える