ソースの各要素を手動で反復せずに、C++ STL 両端キューをスタックに変換する方法はありますか? ( のいずれかがここで使用できるかどうかはわかりません<cast>
。)
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
で満たされるはずold_stack
です。
コンテナ アダプタの内容を他のものと交換します。効果的に電話をかける
using std::swap; swap(c, other.c);
編集コンテナの内容ではなく、基礎となるコンテナを交換しているように見えるswap
ため、これは機能しません。
于 2013-09-18T16:10:04.913 に答える