C++ 理解'std::stack'的容器模板参数`
C++ 理解'std::stack'的容器模板参数`,c++,stl,stack,C++,Stl,Stack,std::stack的第二个模板参数究竟代表什么?例如,在下面的代码中,std::vector意味着什么 std::stack<int, std::vector<int>> fourth(myvector); std::堆栈第四(myvector); 查看std::stack的模板参数: template< class T, class Container = std::deque<T>> class stack; templateclass堆
std::stack
的第二个模板参数究竟代表什么?例如,在下面的代码中,std::vector
意味着什么
std::stack<int, std::vector<int>> fourth(myvector);
std::堆栈第四(myvector);
查看std::stack
的模板参数:
template< class T, class Container = std::deque<T>> class stack;
templateclass堆栈;
std::stack
是一个容器适配器,它默认包装std::deque
。此代码将对其进行更改,以使fourth
包装std::vector
。查看std::stack
的模板参数:
template< class T, class Container = std::deque<T>> class stack;
std::vector<int>
templateclass堆栈;
std::stack
是一个容器适配器,它默认包装std::deque
。此代码将对其进行更改,以使fourth
包装std::vector
std::vector<int>
请检查容器
模板参数的说明
您可以指定满足there要求的容器类。如果省略模板参数规范,则默认容器类型为
注意: 为避免您产生任何误解,请了解
std::stack
围绕这些容器实例所做的包装:
std::stack<int,std::vector<int> > fourth (myvector);
std::堆栈第四(myvector);
匹配构造函数签名,该签名
1) Copy使用cont
的内容构造底层容器c
。这也是默认构造函数(直到C++11)
因此,在构造fourth
之后,myvector
和fourth
实例是独立的。操纵其中一个不会影响另一个。
fourth
使用的std::vector
实例由内部管理
请检查容器
模板参数的说明
您可以指定满足there要求的容器类。如果省略模板参数规范,则默认容器类型为
注意: 为避免您产生任何误解,请了解
std::stack
围绕这些容器实例所做的包装:
std::stack<int,std::vector<int> > fourth (myvector);
std::堆栈第四(myvector);
匹配构造函数签名,该签名
1) Copy使用cont
的内容构造底层容器c
。这也是默认构造函数(直到C++11)
因此,在构造fourth
之后,myvector
和fourth
实例是独立的。操纵其中一个不会影响另一个。
<代码> STD::代码< >代码>第四> <代码>内部管理。< /P>查看C++引用:@ FROB是更好的参考IMHO。@ YashasSamaga也注意到代码> STD::堆栈第四(Myvector);
仅获取myvector
的一个副本用于初始化,而不是引用。此外,(<代码> PUTHORE)/<代码>,<代码> POPUR()/代码>操作不会反映在<代码> MyValue<代码>中,在<代码> MyValue<代码>中,任何操作都不会反映在<代码>第四代码> >中。请查看C++引用:@ FROB是更好的参考IMHO。@ YashasSamaga还注意到代码> STD::堆栈第四(MyVo向量);仅获取myvector
的一个副本用于初始化,而不是引用。进一步的(push()
,pop()
)操作将不会反映在myvector
中,在myvector
上的任何操作都不会反映在fourth
中。标准术语是容器适配器。如何选择在堆栈中使用哪个包装器?@YashasSamaga:使用默认值,直到/除非您知道需要其他内容。堆栈也是包装器,而不是它包装的东西;p标准术语是容器适配器。如何选择要在堆栈中使用的包装器?@YashasSamaga:使用默认值,直到/除非您知道需要其他包装器。堆栈也是包装器,而不是它包装的东西;P