C++ 此语句的确切含义是什么<;int,list<;int>&燃气轮机;它与stack有何不同<;int>;?
我不明白当我们声明堆栈时,C++ 此语句的确切含义是什么<;int,list<;int>&燃气轮机;它与stack有何不同<;int>;?,c++,c++11,C++,C++11,我不明白当我们声明堆栈时,列表做了什么。它不会改变我尝试的内容。如上所述,第二个模板参数定义了基础容器: Container—用于存储数据的基础容器的类型 元素。容器必须满足以下要求: 序列容器。此外,它必须提供以下内容 具有常用语义的函数: back() push_back() pop_back() 标准容器std::vector、std::deque和std::list满足 这些要求。默认情况下,如果没有为指定容器类 一个特定的堆栈类实例化,标准容器 使用std::deque 因此std
列表
做了什么。它不会改变我尝试的内容。如上所述,第二个模板参数定义了基础容器:
Container—用于存储数据的基础容器的类型
元素。容器必须满足以下要求:
序列容器。此外,它必须提供以下内容
具有常用语义的函数:
back()
push_back()
pop_back()
标准容器std::vector、std::deque和std::list满足
这些要求。默认情况下,如果没有为指定容器类
一个特定的堆栈类实例化,标准容器
使用std::deque
因此std::stack
定义此堆栈使用std::list
作为底层容器,而不是默认的std::deque
不是容器,而是容器适配器。您可以告诉它要存储什么类型的元素以及要存储在什么容器中
大致如下:
template <typename T, typename Container = std::deque<T>>
class stack {
protected:
Container c;
public:
void push(T const& v) { c.push_back(v); }
void pop() { c.pop_back(); }
};
模板
类堆栈{
受保护的:
容器c;
公众:
空推(T常数&v){c.push_back(v)}
void pop(){c.pop_back();}
};
如您所见,当您从
stack
更改为stack
时,您只是在更改底层容器存储。界面根本没有改变。但是性能肯定会-deque
是堆栈
比列表
更好的选择 那是标准栈吗?如果是这样的话,首先阅读我使用名称空间std:PThanks实际使用的.Yes、std::stack和std::list,这有助于我找到答案。标准容器std::vector、std::deque和std::list满足这些要求。默认情况下,如果没有为特定堆栈类实例化指定容器类,则使用标准容器std::deque。