例如,我想從輸入向量中挑出第k個最大的元素。C++ - 如何將std :: priority_queue中的元素複製到std :: vector
我知道用QuickSelect std :: nth_element可以做得更好。
我的問題是如何複製std :: priority_queue的底層容器std :: vector到另一個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();
}
有沒有更好的方式來做到這一點?
我們可以像
vector<int> res = pq;
的前k元素並不需要訂購。
'vector res = pq;'這是用來填充有序值的向量嗎? –
不需要訂購 –
那麼你爲什麼使用priority_queue? –