C++標準ライブラリとは?主要コンポーネントと特徴を徹底解説
C++標準ライブラリの概要
C++プログラミング言語における標準ライブラリ(C++ Standard Library)とは、コア言語で記述され、C++ ISO標準規格の一部として定義されているクラスや関数のコレクションです。
標準ライブラリを活用することで、開発者は以下のような機能を追加実装の手間なく利用できます。
- 汎用コンテナと、それらを操作するための関数
- 関数オブジェクト
- 汎用的な文字列やストリーム(対話型I/OやファイルI/Oを含む)
- 一部の言語機能のサポート
- 数値の平方根を求めるなど、日常的なタスクのための関数
C++標準ライブラリの主な構成要素
1. ストリーム(Streams)
ストリーム関連のライブラリは、C++で扱えるさまざまなストリームを処理するために使用されます。例えば、fstreamはファイルストリームを表すクラスで、ファイルの作成、情報の書き込み、読み取りなどに利用できます。また、sstreamは文字列ストリームを表し、主に文字列の操作に使用されます。
2. コンテナ(Containers)
コンテナは、vector、set、map、stack、queueなど、さまざまなデータ型でデータを格納するためのクラスのコレクションです。これらはSTL(Standard Template Library)の主要コンポーネントであり、効率的なデータ管理を実現します。
3. 汎用ライブラリ(General Libraries)
アルゴリズムを扱うalgorithm、時刻処理のためのchrono、イテレータのiterator、メモリ管理のmemoryなど、幅広い汎用機能を提供するライブラリ群です。
4. 数値計算ライブラリ(Numerics Library)
数値計算ライブラリは、C++プログラムが準数値演算(seminumerical operations)を実行するために使用できるコンポーネントのコレクションです。例えば、<complex>は複素数を表現・操作するためのクラステンプレートや多数の関数を定義し、<random>は(疑似)乱数の生成に使用されます。
5. スレッド(Threading)
スレッドライブラリはC++11で導入された機能で、主に並行処理(concurrency)を扱うためのものです。マルチスレッドプログラミングを標準的な方法で実装できるようになりました。
6. C標準ライブラリ(C Standard Library)
C標準ライブラリの各ヘッダーは、異なる名前でC++標準ライブラリに組み込まれています。命名規則は、拡張子「.h」を削除し、先頭に「c」を追加するというものです。例えば、「time.h」は「ctime」になります。
標準ライブラリとSTLの違い
注意すべき点として、C++の標準ライブラリとSTL(Standard Template Library:標準テンプレートライブラリ)は別物です。STLは標準ライブラリのサブセット(一部)であり、標準ライブラリ全体を指すものではありません。この違いを理解しておくことは、C++の学習において重要です。
-
C++標準テンプレートライブラリ(STL)のpair(ペア)徹底解説
本チュートリアルでは、C++標準テンプレートライブラリ(STL)に含まれる pair の使い方について詳しく解説します。 pairは <utility> ヘッダーで定義されているコンテナの一種で、2つの値を格納することができます。異なるデータ型同士であっても、2つの値をひとつの組として結び付けて扱えるのが大きな特徴です。例えば、名前(文字列)と点数(整数)のように、型が異なるデータをまとめて管理したい場合に非常に便利です。 pairの基本構造 pairは first と second という2つの公開メンバ変数を持ち、それぞれ1つ目・2つ目の値に対応します。宣言時には次のように2つ
-
C++ STL(標準テンプレートライブラリ)のプライオリティキュー徹底解説
プライオリティキュー(優先度付きキュー)は、優先度を持つ要素のコレクションを格納するための抽象データ型(ADT)です。各要素は優先度に基づいて挿入・削除が行われ、最も優先度の高い要素はいつでも取り出すことができます。スタックやキュー、リストなどの線形データ構造とは異なり、プライオリティキューは要素を格納位置の順序ではなく、優先度に基づいて管理する点が大きな特徴です。C++では、STLの <queue> ヘッダで提供されており、デフォルトでは最大値が先頭に来る構造になっています。プライオリティキューがサポートする主な操作size() — プライオリティキュー内の要素数を返し、サイズを