#include <iostream>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> q;
for(int i = 0; i < 5; i++)
q.push(i);
while(!q.empty())
{
const int& cur = q.top(); q.pop();
std::cout << cur << std::endl;
}
return 0;
}
上述代碼列印結果是:3 2 1 0 0
如果把 const int& cur = q.top(); 修改為 const int cur = q.top(); 列印結果是 4 3 2 1 0,正常。
為什么用參考接收就有問題了?
uj5u.com熱心網友回復:
因為參考即本身,cur=top 當pop后,cur指向了他現在的top,因而改變而值cur=top()時是復制,pop后,cur不變
uj5u.com熱心網友回復:
1樓正解,你這個API設計得不好。你能保證你top沒有非法操作? std:: 一定要判斷非空才能front(),不要了就pop_front. 含義和你上面2個一樣。如果empty下呼叫front會發生不可預知錯誤。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/105774.html
標籤:C++ 語言
