如何更改适配器容器的基本底层容器类型?

时间:2014-12-31 06:18:03

标签: c++ stl containers

我想使用stack,它使用list作为基本容器而不是vector。我怎么能这样做?据我所知,默认情况下堆栈将使用向量。如何确保堆栈仅使用我提到的容器。例如,我想要使用堆栈 - 仅限列表。

1 个答案:

答案 0 :(得分:4)

将所需容器作为模板化参数。例如:

std::stack<int,std::vector<int> > stack_using_vector_of_int;
std::stack<std::string,std::list<std::string> > stack_using_list_of_string;

如果您想确保stack始终使用列表,请提供始终使用list_stack作为容器的std::list类型定义。

添加Jarod42的评论:

  

发布C ++ 11,你可以使用

template <typename T>
using list_stack = std::stack<T, std::list<T>>;

默认情况下,std::stack使用std::deque作为基础容器,这几乎总是比使用std::liststd::vector更有效。