コンテナ
提供: C++入門
スポンサーリンク
コンテナ (container)とは、オブジェクトの集まりを表現するデータ構造、クラスです。C++のSTLで用意されているコンテナには、いろいろな種類があり、それぞれ目的ごとに使い分けます。ここでのコンテナは、Dockerのようなプロセス空間を分離するためのテクノロジーではありません。
読み方
- コンテナ
- こんてな
- container
- こんてな
概要
コンテナには、以下ような種類があります。
- 配列
- リスト
- スタック
- キュー
- ハッシュ
- 連想配列
コンテナの初期化
- std::initializer_listで宣言時の初期化リストで初期化する。
- std::iotaで各要素に連番の値を代入する。
- std::generateで各要素に値を代入する。
- std::for_eachで各要素に値を代入する。
- std::fillで各要素に同じ値を代入する。
- for文でstd::vector::push_backで1つ1つプッシュする。
STLコンテナの使い分け
連想配列を使いたい
- std::tr1::unordered_mapを使用します。
要素数が固定の場合
- ビット値の場合は bitset を利用します。
- ビット値以外の場合は、std::array を使用します。
要素数が固定ではなく、連想配列ではない
- 要素数が少ない場合は、std::vectorを利用します。
- メモリ効率を優先する場合
- 先頭や末尾の挿入や削除の頻度が高い場合は、std::dequeを使用します。
- それ以外は、std::vectorを利用します。
- 速度重視で、ランダムアクセスの頻度が高い場合
- 先頭や末尾の挿入や削除の頻度が高い場合は、std::dequeを使用します。
- それ以外は、std::vectorを利用します。
- ランダムアクセスの速度を妥協できて、要素の挿入・削除の速度を上げる場合
- キーを大きさの順番で保持する必要がなければ、std::unordered_mapを使用します。
- 順序の保持が必要であれば、std::map を利用します。
- 速度を重視し、挿入・削除の頻度が高い場合
- 先頭・末尾の挿入・削除の頻度が高い場合は、std::deque を使用します。
- 途中の要素の挿入・削除の頻度が高い場合は、std::forward_list
- それ以外は、std::list を利用します。
- 速度を重視し、検索頻度が高い場合
- std::unordered_set, std::unordered_multiset
- それ以外は、std::set, set::multiset を使用します。
関連項目
シーケンスコンテナ
連想コンテナ
連行コンテナ 順不同
コンテナアダプタ
コンテナへのアクセスで利用
コンテナで役立つC++11以降の機能
- std::iotaで各要素に連番の値を代入する。
- std::generateで各要素に値を代入する。
- std::for_eachで各要素に値を代入する。
- std::fillで各要素に同じ値を代入する。
- for文でstd::vector::push_backで1つ1つプッシュする。
ツイート
スポンサーリンク