2016-11-20 53 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