0

ソースの各要素を手動で反復せずに、C++ STL 両端キューをスタックに変換する方法はありますか? ( のいずれかがここで使用できるかどうかはわかりません<cast>。)

4

1 に答える 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 に答える