嵌套容器:为什么我无法访问堆栈队列顶部的堆栈? C ++
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套容器:为什么我无法访问堆栈队列顶部的堆栈? C ++相关的知识,希望对你有一定的参考价值。
所以我使用STL创建了一个堆栈队列,如下所示:
void main()
{
queue<stack<string>> qos;
stack<string> words;
words.push("hey");
qos.push(wors);
cout<< (qos.pop()).top()<<endl;
}
预期行为:
返回嘿这个词
实际结果:
错误:成员引用基类型'void'不是结构或联合
我的问题是为什么它不返回我期待的东西,我的意思是因为qos.pop()返回stack元素而stack具有成员函数top();
答案
你的变量words
和qos
没有任何关系。
main()
也必须有int
的返回类型。
你得到错误信息的原因是,queue<>::pop
没有返回值,可以调用top()
。
你可能想要
#include <iostream>
#include <queue>
#include <stack>
#include <string>
int main()
{
std::queue<std::stack<std::string>> qos;
std::stack<std::string> words;
words.push("hey");
qos.push(words);
std::cout << qos.front().top() << '
';
}
以上是关于嵌套容器:为什么我无法访问堆栈队列顶部的堆栈? C ++的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 的嵌入式堆栈视图中设置边距而不会出现约束错误?