C++ priority_queue size() 问题

C++ priority_queue size() issue

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

std::priority_queue::size() returns 容器的大小作为 std::size_t(技术上是优先级队列底层容器的 size_type)本质上是一个 unsigned int - 因此尝试从空容器大小中减去 1 会得到 0xffffffffffffffffL 的无符号十进制表示形式,这就是为什么你会得到你看到的大值。