gpt4 book ai didi

c++ - 为什么priority_queue pop函数不删除栈顶元素?

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:25 25 4
gpt4 key购买 nike

当我使用pop删除priority_queue元素时,发现通过top函数仍然可以访问到它。我的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()在空队列上是 undefined behaviour .

在幕后,std::priority_queue<int>使用 std::vector<int>保留元素。打电话top()在队列上与调用 front() 具有相同的效果在底层 vector 上,当 vector (和队列)为空时,后者是未定义的:

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

关于c++ - 为什么priority_queue pop函数不删除栈顶元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57018808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com