有没有办法将 C++ STL 双端队列转换为堆栈,反之亦然,而无需手动迭代源的每个元素?(我不确定其中一个<cast>
是否可以在这里使用。)
问问题
305 次
1 回答
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
应该用 from 填充old_stack
。
将容器适配器的内容与其他的内容交换。有效调用
using std::swap; swap(c, other.c);
编辑这似乎swap
只是交换底层容器,而不是容器的内容,所以这不起作用。
于 2013-09-18T16:10:04.913 回答