在STL堆栈和双端队列之间转换

时间:2013-09-18 16:06:51

标签: c++ stl

有没有办法将C ++ STL deque转换为堆栈,反之亦然,而无需手动迭代源的每个元素? (我不确定<cast>中的一个是否可以在这里使用。)

1 个答案:

答案 0 :(得分:1)

stack只是一个容器适配器,因此您只需将deque对象传递给它即可将其用作容器:

std::deque<int> my_deque;
// Do something with deque here
std::stack<int> s(my_deque);

要向其他方向转换,可以将构造函数与迭代器一起使用:

我不确定你是否可以直接转换,反之亦然(直接使用my_deque除外)。我能想到的只有以下几点:

std::deque<int> other_deck;
// Construct new stack:
std::stack<int> new_stack(other_deck);
// use std::swap
std::swap(new_stack, old_stack);

现在other_deck应该填充old_stack

  

将容器适配器的内容与其他容器的内容进行交换。有效地拨打using std::swap; swap(c, other.c);

编辑似乎swap只是交换底层容器,而不是容器的内容,所以这不起作用。