STLとは・・・
STL(Standard Template Library)はC++標準ライブラリの一部です。
STLがC++の標準ライブラリに採用されたのが98年ごろと比較的最近です。
STLは歴史的経緯からいくつかのバージョンが存在しますがここで扱うのは「標準STL(ANSIのSTL)」です。
現在使用されているコンパイラの一部では正しく動作しないことがありますが、これから発売されるコンパイラは問題ないでしょう。
基本的なコンポーネントはコンテナ・イテレータ・アルゴリズムです。
コンテナとはオブジェクト(データ)を管理する機能を提供するオブジェクトです。
イテレータとはポインタと似たコンテナから提供されるオブジェクト(データ)へのアクセス機能を有するオブジェクトです。
アルゴリズムとはコンテナが提供するイテレータを使用し、ある処理を行う汎用アルゴリズムです。
アルゴリズムはイテレータを介しオブジェクト(データ)を処理することによりコンテナ内部の構造を知る必要がありません。
コンテナはイテレータを提供することにより管理しているオブジェクト(データ)をアルゴリズムへ処理させることが出来ます。
このようにコンテナが期待した特性のイテレータを提供することによりアルゴリズムの恩恵を受けることができます。
また、アルゴリズムはコンテナが提供するイテレータにより汎用性の高いアルゴリズムを提供することができます。
STLを使用するにあたってはC++の文法、特にクラス・継承・オーバーロード・テンプレート・オペレータのオーバーロードなどある程度の知識が必要になります。
最後にSTLは使用することにより劇的に記述するソースの量を減らすことができます。また、スピードアップも期待できます。しかし、使いすぎは禁物です。C++はオブジェクト指向を提供しますがSTLはオブジェクト指向は提供しません。
オブジェクト指向とはまったく別の世界(ジェネリックプログラミング)です。
また、STLを知らない人から見るとまったく理解できないソースになってしまいますので注意が必要です。
最終更新:2006年11月28日 01:54