2016-11-20 97 views
0

我試圖得到一個空的priority_queue的大小。發生了一些奇怪的事情有誰能解釋爲什麼會發生這種情況嗎非常感謝。C++ priority_queue大小()問題

#include <iostream> 
#include <queue> 
using namespace std; 

int main() 
{ 
    priority_queue<int, vector<int>, less<int> > asc_queue; 
    cout << asc_queue.size() << " " << asc_queue.size() - 1 << endl; 
} 

輸出:

0 18446744073709551615 
+0

你的問題到底是什麼? –

+0

爲什麼asc_queue.size() - 1不是-1? – daydayup

+3

因爲它是一個無符號值。沒有-1的無符號值。 –

回答

3

std::priority_queue::size()返回所述容器的大小作爲std::size_t(技術上的優先級隊列的基本容器的size_type),其本質上是一個unsigned int - 因此試圖減1從一個空的容器大小爲您提供0xffffffffffffffffL的無符號十進制表示法,這就是爲什麼您可以看到大數值。

+0

找到了你。謝謝。 – daydayup

+1

它給你0xffffffffffffffffL的無符號十進制表示。這裏沒有溢出。 – EJP

+1

@EJP編輯準確然後 – ArchbishopOfBanterbury