STL堆栈与deque之间的转换 有没有一种方法将C++ STL DEQE转换成堆栈,反之亦然,而不必手动迭代源的每个元素?(我不确定这里是否有可用的对象。)
STL堆栈与deque之间的转换 有没有一种方法将C++ STL DEQE转换成堆栈,反之亦然,而不必手动迭代源的每个元素?(我不确定这里是否有可用的对象。),c++,stl,C++,Stl,stack只是一个容器适配器,因此您可以将deque对象传递给它以将其用作容器: std::deque<int> my_deque; // Do something with deque here std::stack<int> s(my_deque); 现在,other_deck应该用old_堆栈中的填充 将容器适配器的内容与其他适配器的内容交换。使用std::swap有效地调用;互换(c,其他c) Edit看来swap只是交换底层容器,而不是容器的内容,所以这不会起
stack
只是一个容器适配器,因此您可以将deque
对象传递给它以将其用作容器:
std::deque<int> my_deque;
// Do something with deque here
std::stack<int> s(my_deque);
现在,other_deck
应该用old_堆栈中的
填充
将容器适配器的内容与其他适配器的内容交换。使用std::swap有效地调用;互换(c,其他c)代码>
Edit看来swap
只是交换底层容器,而不是容器的内容,所以这不会起作用。我想任何复制操作都会在soruce上迭代,所以不会对性能造成太大影响。我假设没有办法访问源堆栈
内部的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);