[解決済み] 優先キューSTLをオブジェクトに使うには?
2023-06-17 15:23:02
質問
class Person
{
public:
int age;
};
Personクラスのオブジェクトを優先キューに格納したい。
priority_queue< Person, vector<Person>, ??? >
比較の件ではクラスを定義する必要があると思うのですが、よくわかりません。
また、書くときに
priority_queue< int, vector<int>, greater<int> >
大はどのように機能するのか?
どのように解決するのですか?
キューに格納された型に対して、有効な厳密な弱い順序の比較を提供する必要があります。
Person
を提供する必要があります。デフォルトでは
std::less<T>
と等価なものに解決されます。
operator<
. これは、それ自身のストアド型が1つであることに依存しています。ですから、もしあなたが
bool operator<(const Person& lhs, const Person& rhs);
であれば、これ以上変更することなく動作するはずです。実装は
bool operator<(const Person& lhs, const Person& rhs)
{
return lhs.age < rhs.age;
}
もし、型が自然な "less than" 比較を持たない場合、デフォルトの
std::less<Person>
. 例えば
struct LessThanByAge
{
bool operator()(const Person& lhs, const Person& rhs) const
{
return lhs.age < rhs.age;
}
};
のように、キューをインスタンス化します。
std::priority_queue<Person, std::vector<Person>, LessThanByAge> pq;
の使用について
std::greater<Person>
をコンパレータとして使う場合、これには
operator>
と等価であり、デフォルトの場合とは優先順位が逆転したキューを作成する効果があります。そのためには
operator>
を操作することができる
Person
インスタンスを操作することができます。
関連
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】'cout'は型名ではない
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません