首页 > 解决方案 > 向量可以包含堆栈吗?

问题描述

我知道您可以将向量作为堆栈的存储容器,但我想知道您是否可以将数据类型作为堆栈存储在向量中。因此,如果我有一个名为 vector1 的向量,vector1.at(2) 是否可以返回一个堆栈而不是 int 或 double 等数据类型?我希望当向量的大小翻倍时,它可以在程序运行时创建更多堆栈,因为我不知道在运行之前我需要多少堆栈。

标签: c++vectorstack

解决方案


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

推荐阅读