我可以使用Priority_queue的基础容器的成员功能

Can I use member function of underlying container of priority_queue

本文关键字:成员 功能 我可以 Priority queue 可以使      更新时间:2023-10-16

作为标题,我创建了一个Priority_queue(默认使用向量作为基础容器(p。我可以使用vector的成员函数,例如 p.push_back(a)p.reserve(25)甚至使用for(auto i:p) {cout << i}当我在下面运行代码时,编译器(GCC(告诉我

class" std :: priority_queue>, >"没有会员"储备"
std :: Priority_queue,std ::大>' 没有成员命名为"开始"
等。

如果我想使用上面提到的功能,或者只是被禁止?

我该怎么办?
#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int main(){
    priority_queue<int , vector<int>, greater<int>> p;
    p.push_back(1);
    p.reserve(25);
    for(auto i : p){
        cout << i;
    }
    return 0;
}

容器适配器的设计专门用于抽象基础容器。它自己提供了新的抽象。

所以,不,您不能在队列内拨打矢量的成员。但是,您可以做的是在向量上呼叫函数它进入队列。然后将其移动到位:

#include<iostream>
#include<queue>
#include<vector>
using namespace std;
int main(){
   vector<int>   v;
   v.reserve(25);
   v.push_back(1);
    priority_queue<int , vector<int>, greater<int>> p(greater<int>(), std::move(v));
    return 0;
} 

仍然无法输出队列或堆栈的内容,因为您只能访问top()元素(作为抽象的一部分(。