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
的无符号十进制表示形式,这就是为什么你会得到你看到的大值。
我试图获取空 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
的无符号十进制表示形式,这就是为什么你会得到你看到的大值。