ホームに戻る
出典 :
cpprefjp - C++日本語リファレンス STLの型の使い分け - Qiita
関連 :
イテレータ ビットセット ベクトル(動的配列) マップ(連想配列) キュー(Queue)とスタック(Stack) ジェネリックプログラミング [.NET]コレクション
目次 :

コンテナとは

「指定した型のデータを複数個格納するデータ構造」のこと。C言語における配列(固定長配列)もコンテナである。
C++のSTL(Standard Template Library)には、
といった、データを取り扱う上で有用なコンテナクラスが定義されている。
C++以外にもJava、C#、Rubyなどのモダンな言語には同様の機構が実装されている。

コンテナの一覧

可変長・固定長配列

メモリ領域が連続するため、ポインタで走査可能。
名称 概要・特長 必要なヘッダ 備考
vector ベクトル(可変長配列)
要素数を自由に変更できる
ランダムアクセスが高速でメモリ効率が良い
#include <vector> 詳細はリンク先を参照
array 通常の固定長配列に各種機能(ヘルパー)を追加したもの #include <array> C++11以降

list : 連結リスト

名称 概要・特長 必要なヘッダ 備考
list 双方向リスト
前後の要素への参照(ポインタ)を保持し、順に辿ることができる
要素の追加・削除が高速だが、ランダムアクセスは遅い
#include <list>
forward_list 単方向リスト
後の要素への参照(ポインタ)を保持する
list と異なり、前へは辿れない
#include <forward_list> C++11以降

map : ユニークなキーと、値の対を格納(連想配列)

ユニークなキーと、値のペアを格納する。要素の参照が高速。
詳細はリンク先を参照。
名称 概要・特長 必要なヘッダ 備考
map 要素はキーの値の大小に従ってソートされる #include <map>
multimap キーの重複が認められるmap
unordered_map 要素がソートされない map
map よりも処理が高速でメモリ効率が良い
#include <unordered_map> C++11以降
unordered_multimap 要素がソートされない multimap
multimap よりも処理が高速でメモリ効率が良い

set : ユニークな値を格納

ユニークな要素を格納する。map とは異なり、要素自体をキーとする。
名称 概要・特長 必要なヘッダ 備考
set 要素は昇順にソートされる #include <set>
multiset 値の重複が許される set
unordered_set 要素がソートされない set
set よりも処理が高速でメモリ効率が良い
#include <unordered_set> C++11以降
unordered_multiset 要素がソートされない multiset
multiset よりも処理が高速でメモリ効率が良い

その他

名称 概要・特長 必要なヘッダ 備考
stack スタック(LIFO)
追加した要素を新しい順に取り出す
プッシュ・ポップが高速
#include <stack> リンク先も併せて参照
queue キュー(FIFO)
追加した要素を旧い順に取り出す
エンキュー・デキューが高速
#include <queue>
priority_queue 優先度付きキュー
要素を追加順ではなく、優先度順で管理する
値は優先度の大きいものから取り出される(デフォルトは降順)
deque 両端キュー(Double-Ended QUEue)
先頭・末尾への要素の追加・削除を高速に行える
#include <deque>
bitset 固定長のビット列
フラグとして使用可
#include <bitset> 詳細はリンク先を参照