1. ホーム
  2. c++

[解決済み] STLコンテナのdequeとlistの違いは何ですか?

2022-08-21 05:53:52

質問

この2つの違いは何ですか?つまり、メソッドはすべて同じです。つまり、ユーザーにとっては、同じように機能するのです。

ということでよろしいでしょうか?

どのように解決するのですか?

から(古いですが、今でもとても便利です。) SGI STL の要約です。 deque :

dequeはvectorと非常によく似ています。vectorのように、要素へのランダムアクセス、シーケンスの末端での要素の定時間挿入と削除、および途中での要素の線形時間挿入と削除をサポートするシーケンスです。

dequeがvectorと異なる主な点は、dequeもシーケンスの先頭で一定時間の要素の挿入と削除をサポートすることです。さらに、deque は vector の capacity() および reserve() に類似したメンバー関数を持たず、これらのメンバー関数に関連するイテレータの有効性の保証を一切提供しません。

以下は list についてのまとめです。

リストは2重リンクリストです。つまり、前方および後方への走査と、最初または最後、あるいは途中での要素の (償却された) 定時間挿入および削除の両方をサポートする Sequence である。リストは、挿入や接続がリスト要素へのイテレータを無効にせず、削除も削除された要素を指すイテレータのみを無効にするという重要な性質を持っている。イテレータの順序は変更されるかもしれませんが (つまり、リスト操作の後に list::iterator は以前とは異なる先行者または後続者を持つかもしれません)、その無効化または変異が明示されていない限り、イテレータ自体が無効にされたり異なる要素を指すようにされたりすることはありません。

要約すると、コンテナは共有ルーチンを持つかもしれませんが これらのルーチンの時間保証はコンテナごとに異なります。 . このことは、タスクにどのコンテナを使用するかを検討する際に非常に重要です。 どのように を考慮することは、適切なコンテナを選択する上で大きな助けとなります。