2017-12-13 21 views
1

C++にはコンテナがありますか?どちらの端にも要素を追加することができます。同様に、いずれかの端から要素を削除します。たぶんSTLまたはブースト?両端に追加したり削除したりできるコンテナはありますか

+2

'std :: list'についてはどうですか? –

+0

それは完璧に動作します!ありがとう! – user7795930

+4

'std :: deque'?ランダムアクセスが必要な場合( 'at()'や 'operator []')、私は 'std :: deque'を提案します。そうでなければ 'std :: list'が良い選択だと思います。 – max66

答えて

0

あなたは移植性v.insert(v.begin(), x)を経由してシーケンスコンテナ(vector/deque/list)の前に要素xを追加することができます。しかし、vectorの場合、これはO(n)オペレーションです(これはvectorが便利なpush_frontオペレーションを持たないためです)、既存のすべての要素を再配置します。既存の要素の再配置を望まない場合は、dequeまたはlistが適しています。

+0

'list'はあまりお薦めしないでください。' list'はほとんど常に悪い考えである非常に特殊なコンテナです。 – Yakk

関連する問題