c++ - 向量可以包含堆栈吗?
问题描述
我知道您可以将向量作为堆栈的存储容器,但我想知道您是否可以将数据类型作为堆栈存储在向量中。因此,如果我有一个名为 vector1 的向量,vector1.at(2) 是否可以返回一个堆栈而不是 int 或 double 等数据类型?我希望当向量的大小翻倍时,它可以在程序运行时创建更多堆栈,因为我不知道在运行之前我需要多少堆栈。
解决方案
Astd::vector
被设计为模板,以便它可以存储任何数据类型。模板参数可以根据需要简单或复杂。如果您希望向量的每个元素都为 a ,std::stack<int>
则将其设为向量的模板参数。
std::vector< std::stack<int> > vector1;
// ^^^^^^^^^^^^^^^----------------The vector's template argument
复合容器可能会令人困惑,因此请记住哪个容器在起作用。外部容器是一个向量。可以使用insert
, emplace
,push_back
等添加元素(堆栈)。
vector1.emplace_back(); // Add an empty stack to the vector
内部容器(模板参数)是std::vector::at
. 像这样的表达式vector1.at(2)
计算为堆栈(假设vector1.size()
至少为 3)。可以像往常一样操作该堆栈,使用vector1.at(2)
它的名称。
vector1.at(2).push(7); // Push 7 onto the third stack in the vector
vector1[2].pop(); // Remove the top element of the third stack in the vector
推荐阅读
- python - 运行我的 code_python 3 后,字典数据库如何附加并保存新条目?
- git - 当我输入“git commit”时如何打开Atom
- javascript - Webpack-dev-server 似乎正在运行,但是当我尝试访问端口时出现“无法访问此站点”
- javascript - 如何使用 d3.js 命令填充两个 div 一个在另一个之上?
- sql - 如何解析未知字符串之间的数据
- javascript - 将 Axios 承诺返回给几个调用者
- jmeter - 如何在 taurus 报告控制台视图中添加滚动,以便显示完整的详细信息
- spring-cloud-gateway - ReactiveLoadBalancerClientFilter 中的健康检查
- r - 更快地计算与 R 中的值匹配的行
- javascript - 在小提琴图表 PlotlyJS 中突出显示一点