std :: priority_queueでは、最初のテンプレートパラメータが型を指定し、2番目がその型のコンテナであると仮定しました。例:priority_queueの最初のテンプレートパラメータの使用方法
priority_queue<int, vector<int>> someQueue;
ただし、次のコードはコンパイルされ、正常に動作するようです:
class SomeClass
{
};
int main()
{
priority_queue <SomeClass, vector<int>> pq;
int x = 9;
pq.push(x);
int t = pq.top();
cout << t << endl;
pq.pop();
return 0;
}
は、上記のコード無効(すなわちUBを与える)ですか?
有効な場合は、priority_queueに使用される最初のテンプレートパラメータ(つまり、someClass
)は何ですか。
ニースが見つかりました。 'priority_queue'と書くことができます。他の場所では使用されていませんが、標準ではそれに関する要件はありません。 –
[この 'std :: priority_queue'リファレンス](http://en.cppreference.com/w/cpp/container/priority_queue)では、格納されたデータに使用される型は実際にはコンテナの型を使用していますが、最初のテンプレート引数を提供しました。それがそうでなければならないと仕様が何を言っているのかわからない。 –
firsrtパラメータは、2番目のパラメータの要素タイプです。だから私はこの 'priority_queue> pq;'が間違っていると思います。 http://www.cplusplus.com/reference/queue/priority_queue/ –
BlackMamba