我可以使用Priority_queue的基础容器的成员功能
Can I use member function of underlying container of priority_queue
作为标题,我创建了一个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()
元素(作为抽象的一部分(。
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- 升压信号2将插槽传递到成员功能以断开连接
- 多次实现成员功能
- 私有成员数据不可用于公共成员功能
- 如何避免大多数成员功能相同的代码重复
- C 成员功能
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- C 朋友课程和朋友成员功能
- C 函数调用包装器包含类成员功能作为模板参数
- 创建类成员功能
- 成员功能C 的不同实现
- 返回类型不可知模板类成员功能
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- 超载类成员功能标记为const
- C 功能指针和成员功能指针
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 我可以使用Priority_queue的基础容器的成员功能
- 如何子类可运行任何成员功能
- 共享类时如何隐藏成员功能文件
- 从C文件访问C 类成员功能