[英]Why does the priority_queue pop function not delete the top element?
当我使用pop删除priority_queue元素时,发现仍然可以通过顶部函数对其进行访问。我的gcc版本是gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
。
#include <iostream>
#include <queue>
using namespace std;
int main()
{
priority_queue<int> l;
l.push(1);
cout << l.top() << endl; // 1
l.pop();
cout << l.top() << endl; // 1
}
为什么呢?
在空队列上调用top()
是未定义的行为 。
在幕后, std::priority_queue<int>
使用std::vector<int>
保留元素。 在队列上调用top()
与在基础向量上调用front()
具有相同的效果,并且当向量(和队列)为空时,后者是未定义的:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.