繁体   English   中英

为什么priority_queue pop函数不会删除top元素?

[英]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()具有相同的效果,并且当向量(和队列)为空时,后者是未定义的:

https://en.cppreference.com/w/cpp/container/vector/front

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM