この『標準 C++ ライブラリ・ユーザーズガイド』では、Rogue Wave の 標準 C++ ライブラリの実装を紹介します。このマニュアルでは、読者が C++ プログラミング言語の基本機能を習得していることを前提としています。C++ の知識がまったくない場合は、Bjarne Stroustrup 氏の著書、『The C++ Programming Language』 (Addison-Wesley, 1997) などの入門書を読むことを推奨します。
標準 C++ ライブラリのすべてが、std 名前空間に格納されています。宣言を使用して指定するか、たとえば、using std::vector; や std::vector<int> v; を使用して、ライブラリから名前の有効範囲を明示的に指定する必要があります。これは、各例で前提となっています。
このマニュアルでは、独自の用語と規約を使用します。標準 C++ ライブラリは大部分がクラスと関数のテンプレートで構成されているため、これらのテンプレートの省略名は共通です。たとえば、マニュアルの入出力の部分では、fstream が template <class charT, class traits> class basic_fstream を表します。また、basic_fstream <charT, traits> のように、もう少し簡単に指定されたクラステンプレートも頻繁に使用されます。ファイルストリームはファイルストリームクラスのテンプレートの抽象概念を表し、badbit は状態フラグ ios_base::badbit を表します。
アルゴリズムという用語は、標準 C++ ライブラリの汎用アルゴリズム部分の関数を意味し、メンバー関数、引数関数、ユーザーが定義した関数との混同を避けるために使用されます。
引数に関しては重点をおかず、関数名とアルゴリズム名の後に空の丸括弧 () を続けます。下線文字 _ は、クラス名と関数名の両方の区切り文字として使用されます。
表 2 に、クラス名、コーディング例、特殊な意味などに設定されている特殊フォントを示します。
表 2 -- 表記規則
規則 | 目的 | 例 |
---|---|---|
Courier |
コード、例、関数名、ファイル名、ディレクトリ名、オペレーティングシステムコマンド |
return result; |
italic |
強調 新出用語 書名 |
heap、
システムのファミリー 特殊終了反復子 ユーザーズガイド |
bold |
強調 インタフェースからのコマンド Rogue Wave の製品名 |
その前にこれを実行してください OK ボタン 標準 C++ ライブラリ ファイル |
bold italic |
クラス名 |
priority queue |
このマニュアルは、6 つの部分で構成されています。
第 I 部 はじめにでは、製品の概要、製品について説明しているマニュアル、このマニュアル『標準 C++ ライブラリ・ユーザーズガイド』について記載しています。
第 II 部 基本事項では、標準 C++ ライブラリにおける反復子、関数、述語の基本概念について説明します。
データ構造が示されている製品の概要は、標準 C++ ライブラリのアルゴリズムとは区別されています。
このマニュアルでは、第 III 部 コンテナにデータ構造やコンテナの概要を記載し、各章で 1 つずつ例を示して詳細を説明しています。 第 IV 部 アルゴリズムでは、アルゴリズムについて記載し、1 つの章で汎用アルゴリズムについて、他の章で順序付きコレクションに固有の汎用アルゴリズムについて説明しています。アルゴリズムの章では、それぞれのアルゴリズムの節で例と完全なソースコードを含むファイルへの参照を説明しています。
第 V 部 特殊手法では、アロケータなどの使用、コンテナや汎用アルゴリズムの構築、特殊手法の使用、例外処理などの手法について説明します。
第 VI 部 特殊クラスでは、auto_ptr、complex、numeric_limit、valarray の 4 つの固有のクラスについて、それぞれ 1 つの章で説明します。
はじめてこのマニュアルを読む場合は、どこから読み始めるべきかと迷うかもしれません。コンテナの定義はライブラリの核となりますが、機能の拡張性が非常に高いので、アルゴリズムを理解しなければ、正しく評価することはできません。一方、コンテナの評価なしに、アルゴリズムを正しく理解することもできません。
最初に、第 II 部 基本事項を熟読し、次に、第 III 部 コンテナのコンテナの定義と第 IV 部 アルゴリズムのアルゴリズムの説明に簡単に目を通してから、もう一度じっくりと読みます。その後で、細分化された内容を説明する章に進みます。