Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 理解'std::stack'的容器模板参数`_C++_Stl_Stack - Fatal编程技术网

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