C++ STL (標準テンプレートライブラリ)はクラステンプレートとアルゴリズムの標準コレクションであり、プログラマが容易にキュー、リスト、スタックというような標準的なデータ構造を実装することを可能にします。
C++ STLでは2種類のコンテナを提供します:
さらにC++標準ライブラリではいくつかのSTLではないコンテナを提供しています。それらはコンテナの様に捉えることもできますか、STLコンテナのすべての要件を満たしているわけではありません。
C++ STLの背景にある思想は、複雑なデータ構造を使う際の難しい部分は既に実装済みであるという点です。
もしプログラマが整数のスタックを使いたければ、次のコードを書くだけでよいのです。
stack<int> myStack;
最小限の努力で、このスタックに対して整数をpushやpopできるのです。 C++テンプレートの魔法によって、整数だけでなくすべてのデータ型を使うことができます。 STLスタッククラスによってスタック内のデータに関係なく、一般的なスタックの機能を利用することができます。
上記に加え、STLでは多くの便利なアルゴリズムも提供しています。–例えば binary_search、sort、for_eachなどがあり、 これらは様々なコンテナやデータ構造において使うことができます。
C++ イテレータ STLコンテナや他のデータ構造に対してイテレーションを可能にします。
<functional> ヘッダファイルでは関数オブジェクトや関数アダプタを定義しています。
<memory> ヘッダファイルではauto_ptrのような簡素なメモリ管理構造を提供しています。
<utility> ヘッダファイル内のmake_pairのような一般的なユーティリティメソッドもいくつかあります。