たとえば、入力ベクトルからk番目に大きい要素を選びたいとします。C++ - std :: priority_queueからstd :: vectorに要素をコピーする方法
私は、QuickSelect std :: nth_elementを使用する方が良いことが分かります。
私の質問は、このコーディングの問題を解決するのではなく、std :: priority_queueの基になるコンテナstd :: vectorを別のベクターにコピーする方法です。
priority_queue<int, vector<int>, greater<int>> pq;
for (int num : nums) {
pq.push(num);
if (pq.size() > k) {
pq.pop();
}
}
私のやり方は愚かである:
vector<int> res;
while (!pq.empty()) {
res.push_back(pq.top());
pq.pop();
}
はそれを行うには良い方法はありますか?
は、我々はトップk個の要素を注文する必要はありません
vector<int> res = pq;
のようにそれを行うことができます。
'ベクトル res = pq;'これは順序付けされた値でベクトルを埋めることを意図していますか? –
注文する必要はありません –
なぜpriority_queueを使用していますか? –