<分区>
std::stack
的第二个模板参数到底是做什么的?代表?例如,在下面的代码中,std::vector<int>
是什么意思?暗示?
std::stack<int, std::vector<int>> fourth(myvector);
<分区>
std::stack
的第二个模板参数到底是做什么的?代表?例如,在下面的代码中,std::vector<int>
是什么意思?暗示?
std::stack<int, std::vector<int>> fourth(myvector);
最佳答案
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) Copy-constructs the underlying container
c
with the contents ofcont
. This is also the default constructor (until C++11)
因此,myvector
和 fourth
在构建fourth
之后实例是独立的.操纵其中任何一个都不会影响另一个。
std::vector<int>
fourth
使用的实例由内部管理。
关于c++ - 理解 `std::stack`的容器模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330929/