C++ 標準ライブラリ (STL) の概要
すべての C++ ライブラリのエンティティは 1 つ以上の標準ヘッダーで宣言または定義されます。 この実装には、C++ 標準では必要ない他の 2 つのヘッダー ( <hash_map>
と <hash_set>
) が含まれています。 この実装でサポートされるヘッダーの完全な一覧については、「 Header ファイルリファレンスを参照してください。
C++ 標準では、次の 2 種類の準拠ライブラリが定義されています。
- ホストされた実装。C++ ISO 標準で記述されている必要なすべての標準ライブラリ ヘッダーをサポートします。
- 標準ライブラリ ヘッダーのサブセットのみを必要とするの実装です。 必要なサブセットは次のとおりです。
独立したヘッダー のサブセット | ||
---|---|---|
<atomic> (少なくとも atomic_signed_lock_free と atomic_unsigned_lock_free の宣言) |
<cstdint> |
<ranges> |
<bit> |
<cstdlib> (少なくとも abort 、 atexit 、 at_quick_exit 、 exit 、 quick_exit の宣言) |
<ratio> |
<cfloat> |
<exception> |
<tuple> |
<climits> |
<functional> |
<typeinfo> |
<compare> |
<initializer_list> |
<source_location> |
<concepts> |
<iterator> |
<type_traits> |
<coroutine> |
<limits> |
<utility> |
<cstdarg> |
<memory> |
<version> |
<cstddef> |
<new> |
C++11 以降では、 <ciso646>
、 <cstdalign>
、 <cstdbool>
の各ヘッダーは非推奨となっています。
独立した実装とホストされる実装のその他の違いは次のとおりです。
- ホストされる実装には、
main
という名前のグローバル関数が必要です。 独立した実装では、独自のスタートアップ関数と終了関数を定義できます。 - ホストされる実装では、同時に実行される複数のスレッドをサポートする必要があります。 独立した実装の実装者は、ライブラリが同時実行スレッドをサポートするかどうかを決定します。
Microsoft C++ 標準ライブラリは、独立した要件とホストされている要件の両方を満たしています。
C++ のライブラリのヘッダーには 2 つの広範な再分割があります。
iostreams の規則。
このセクションでは、以下のセクションについて説明します。
Visual C++ ランタイム ライブラリの詳細については、「CRT ライブラリの機能」をご覧ください。
Note
Microsoft の C++ 標準ライブラリの実装は、多くの場合、 STL または Standard テンプレート ライブラリと呼ばれます。 C++ 標準ライブラリは ISO 14882 で定義されているライブラリの正式な名前ですが、検索エンジンでは "STL" と "標準テンプレート ライブラリ" が一般的に使用されているため、これらの名前を使用してドキュメントを見つけやすくなります。 歴史的な観点から見ると、"STL"はもともとアレキサンダー・ステパノフによって書かれた標準テンプレートライブラリを指しました。 そのライブラリの一部は、C++ 標準ライブラリ、ISO C ランタイム ライブラリ、Boost ライブラリの一部、およびその他の機能と共に標準化されました。 "STL" は、Stepanov の STL から適応された C++ 標準ライブラリのコンテナーとアルゴリズムの部分を参照するためにも使用される場合があります。 このドキュメントでは、標準テンプレート ライブラリ (STL) は C++ 標準ライブラリ全体を指します。