コンテナ

提供: C++入門
2015年12月13日 (日) 12:37時点におけるDaemon (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

コンテナ (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以降の機能




スポンサーリンク