「コンテナ」の版間の差分

提供: C++入門
移動: 案内検索
 
行1: 行1:
[[コンテナ]] (container)とは、オブジェクトの集まりを表現するデータ構造、[[クラス]]です。[[C++]]の[[STL]]で用意されている[[コンテナ]]には、いろいろな種類があり、それぞれ目的ごとに使い分けます。
+
[[コンテナ]] (container)とは、オブジェクトの集まりを表現するデータ構造、[[クラス]]です。[[C++]]の[[STL]]で用意されている[[コンテナ]]には、いろいろな種類があり、それぞれ目的ごとに使い分けます。ここでの[[コンテナ]]は、Dockerのようなプロセス空間を分離するためのテクノロジーではありません。
  
 
'''読み方'''
 
'''読み方'''
行14: 行14:
 
* ハッシュ
 
* ハッシュ
 
* 連想配列
 
* 連想配列
 
 
== コンテナの初期化 ==
 
== コンテナの初期化 ==
 
* [[std::initializer_list]]で宣言時の初期化リストで初期化する。
 
* [[std::initializer_list]]で宣言時の初期化リストで初期化する。

2015年12月13日 (日) 12:37時点における最新版

コンテナ (container)とは、オブジェクトの集まりを表現するデータ構造、クラスです。C++STLで用意されているコンテナには、いろいろな種類があり、それぞれ目的ごとに使い分けます。ここでのコンテナは、Dockerのようなプロセス空間を分離するためのテクノロジーではありません。

読み方

コンテナ
こんてな
container
こんてな

概要

コンテナには、以下ような種類があります。

  • 配列
  • リスト
  • スタック
  • キュー
  • ハッシュ
  • 連想配列

コンテナの初期化

STLコンテナの使い分け

連想配列を使いたい

要素数が固定の場合

  • ビット値の場合は 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 を利用します。
  • 速度を重視し、検索頻度が高い場合

関連項目

シーケンスコンテナ

連想コンテナ

連行コンテナ 順不同

コンテナアダプタ

コンテナへのアクセスで利用

コンテナで役立つC++11以降の機能