C++におけるpriority_queueの定義は何ですか?
C++のpriority_queueは、優先順位に基づいた要素のアクセス方法を提供するコンテナアダプターです。要素を一括管理し、優先度に基づいて並べ替えることができます。priority_queueクラステンプレートは、ヘッダーファイルにあり、以下の定義を提供しています。
template <class T, class Container = vector<T>, class Compare = less<typename Container::value_type>>
class priority_queue;
Tはpriority_queueに格納される要素の型であり、Containerは要素を格納するためのコンテナの型を指定します。デフォルト値はvectorです。また、Compareは要素の優先順位を比較する述語を定義するために使用されます。デフォルト値はstd::lessです。
priority_queueのデフォルトの並び順は、比較器であるCompareによって要求された通り、デフォルトでは大きい順(大->小)または小さい順(小->大)で要素が並べられます。したがって、デフォルトの場合、priority_queueのトップの要素は最大の要素となります。
priority_queueは、以下の一般的に使用されるメンバー関数を提供します。
- push(x):priority_queueに要素xを挿入する。
- pop():一番上の要素を削除します。
- top()は、トップ要素への参照を返します。
- empty()メソッド:priority_queueが空かどうかを確認します。
- size()関数は、priority_queue内の要素の数を返します。
priority_queueにはイテレータが提供されていないため、コンテナ内の要素に直接アクセスすることはできません。要素を繰り返し処理する必要がある場合は、pop()関数を使って頂点の要素を1つずつ取り出すことができます。