Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
STL堆栈与deque之间的转换 有没有一种方法将C++ STL DEQE转换成堆栈,反之亦然,而不必手动迭代源的每个元素?(我不确定这里是否有可用的对象。)_C++_Stl - Fatal编程技术网

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);