STL 【Standard Template Library】 標準テンプレートライブラリ
概要
STL(Standard Template Library)とは、C++言語の標準ライブラリの一部で、同言語の「テンプレート」(template)機能を利用して汎用的なデータ構造などを特定のデータ型に依存しない形で定義したもの。C++言語は静的型付け言語であるため、関数などの引数や返り値のデータ型はコード上で確定させる必要がある。様々な型の値を投入する可能性がある場合は、中身の処理は同じでデータ型だけが異なる関数を定義しなければならなくなってしまう。
そのような場合にテンプレートの仕組みを用いると、データ型の部分を引数にしておき、呼び出し時にどのデータ型でその関数を呼び出すかを指定することができる。これを応用して、よく用いられるデータ構造などをライブラリの形で提供するのがSTLである。
様々な場面でよく用いられる著名なデータ構造(コンテナ)と、その中の要素の参照や操作を行う手続き(イテレータ、アルゴリズム)、アルゴリズムに対してオブジェクトのように渡すことができる関数(関数オブジェクト)が定義されている。これらは任意の型のデータに対して適用することができる。
標準で利用できるコンテナとしては、「vector」(動的に長さが変化する配列)、「array」(固定長の配列)、「deque」(両端キュー)、「list」(双方向リスト)、「forward_list」(単方向リスト)、「map」(連想配列)、「set」(集合)などがある。これらのコンテナについて、標準で利用できる操作として、要素の挿入、複製、削除、検索、並べ替え(整列/ソート)、最大・最小の探索、和集合、積集合などが用意されている。
STLは1992年にヒューレット・パッカード(Hewlett-Packard)社のアレクサンドル・ステパノフ(Alexander Stepanov)氏らのグループが考案し、1994年にANSI/ISO標準C++ライブラリの一部として採択された。一般的なC++言語の処理系で利用することができる。
(2024.8.21更新)