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