C ++ priority_queue size()问题

时间:2016-11-20 01:22:19

标签: c++ priority-queue

我试图获得空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

1 个答案:

答案 0 :(得分:3)

std::priority_queue::size()将容器的大小返回为std::size_t(技术上是优先级队列的基础容器的size_type),基本上是unsigned int - 因此尝试从空容器大小到负1给出了0xffffffffffffffffL的无符号十进制表示,这就是为什么你得到你看到的大值。