我想使用stack,它使用list作为基本容器而不是vector。我怎么能这样做?据我所知,默认情况下堆栈将使用向量。如何确保堆栈仅使用我提到的容器。例如,我想要使用堆栈 - 仅限列表。
答案 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::list
或std::vector
更有效。