std::stack
的第二个模板参数到底代表什么?例如,在以下代码中,std::vector<int>
意味着什么?
std::stack<int, std::vector<int>> fourth(myvector);
答案 0 :(得分:3)
std::vector<int>
指定std::stack<int>
用于在内部存储值的容器。
std::stack
的模板签名是
template<
class T,
class Container = std::deque<T>
> class stack;
请查看Container
模板参数here上的说明。
您可以指定满足Sequence Container要求的容器类。如果省略模板参数规范,则默认容器类型为std::deque<T>
。
注意:
为了避免您身边的任何误解,关于std::stack<>
围绕这些容器实例执行的包装:
std::stack<int,std::vector<int> > fourth (myvector);
匹配explicit stack( const Container& cont );
构造函数签名,
1)复制 - 构造具有
c
内容的基础容器cont
。这也是默认构造函数(直到C ++ 11)
因此,在myvector
构建后,fourth
和fourth
个实例是独立的。操纵它们中的任何一个都不会影响另一个。
std::vector<int>
使用的fourth
实例在内部进行管理。
答案 1 :(得分:2)
查看std::stack
的模板参数:
template< class T, class Container = std::deque<T>> class stack;
std::stack
是容器适配器,默认包装std::deque
。此代码对其进行了更改,以便fourth
包含std::vector
。