c++ - 理解 `std::stack`的容器模板参数

标签 c++ stl stack

<分区>

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 of cont. This is also the default constructor (until C++11)

因此,myvectorfourth在构建fourth 之后实例是独立的.操纵其中任何一个都不会影响另一个。 std::vector<int> fourth 使用的实例由内部管理。

关于c++ - 理解 `std::stack`的容器模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330929/

相关文章:

c++ - 更新功能中的跳跃 Action 播放声音(openframework)

c++ - 将 std::bind2nd 与引用一起使用

c - 为什么更大的堆栈会使 .bss 增加 4 倍?

c# - 堆栈 - 值类型的值存储在哪里?

c++ - 指针可以由等于 0 的随机地址初始化吗?

c++ - Doxygen 未记录的字符串值

c++ - 强制转换会导致缓冲区溢出吗?

c++ - 如何实现枚举类对象的二维 vector ?

C++ STL容器优先级队列初始化

amazon-web-services - 如何在cloudformation中使用一个模板部署多个堆栈