STL
読み:エスティーエル
外語:STL: Standard Template Library
標準テンプレートライブラリ。
標準C++ライブラリ
に含まれる機能の一つである。
目次
概要
特徴
機能
コンテナー
イテレーター
共通アルゴリズム
関数オブジェクト
概要
可変長配列/リスト/マップ(
連想配列
)等の基本的なコレクションクラス、コレクションを操作する
イテレーター
、オブジェクト化されたアルゴリズムや関数、などを提供する。
テンプレート
を多用しており、多くはヘッダーファイルのみで実装される。
特徴
STLという用語は、正式な定義はない。一般には、次のものから構成されると認識されている。
コンテナー
イテレーター
(反復子)
共通アルゴリズム
関数オブジェクト(ファンクションオブジェクト)
これらと、他の
標準C++ライブラリ
を組み合わせてC++のプログラムは記述される。
機能
コンテナー
コンテナーは、動的に領域を確保し、自動的に解放をしてくれる機能である。
大きく三種類に分類される、次の機能がある。
順序コンテナー
vector
‐ 動的配列
list
‐ 双方向リンク型リスト
deque ‐ 動的配列(両端キュー)
コンテナーアダプター
stack ‐
スタック
(
LIFO
)
queue ‐
キュー
(
FIFO
)
priority_queue ‐ 優先順位付きキュー
連想コンテナー
map ‐ マップ
multimap ‐ マルチマップ
set ‐ セット
multiset ‐ マルチセット
イテレーター
イテレーター
(反復子)は、コンテナーの各要素へアクセスするためのクラスである。
どのようなクラスでも共通のインターフェイスを持っており、また
ポインター
と同様に
インクリメント
/
デクリメント
で前後に移動し、*や
->
で要素の参照が可能となっている。
共通アルゴリズム
コンテナーの要素に対して使われる関数群である。
ソート、マージ、検索、反転など、様々なものが用意されている。
これらの関数は、イテレーターを介してコンテナーの要素にアクセスする。
関数オブジェクト
演算子
をオブジェクト化したもの。
Cのqsort()関数を例とすると、値を比較するための関数へのポインターを渡していた。C++のSTLでは、関数オブジェクトを用いる。必要な演算子が
オーバーロード
されていれば、いちいち関数を定義する必要がない。
再検索