## 1.2 製品の概要

### 1.2.1 構成要素

標準 C++ ライブラリは、詳細で低レベルのプログラミングにおける、クラスと関数の大型で総合的な集まりです。このライブラリには、次のような構成要素があります。

- 以前 Standard Template Library (STL) と呼ばれていたデータ構造体とアルゴリズムの大型セット

- 入出力ストリーム機能

- ロケール機能

- テンプレート化された文字列クラス

- 複素数を表現するための、テンプレート化された complex クラス

- 数値配列を処理するために最適化された valarray クラス

- numeric_limits という名前のテンプレートクラスと各基本データ型の特殊化を使用して、実行環境を記述するための汎用的な枠組み

- メモリー管理機能

- 各種言語文字セットの拡張サポート

- 例外処理機能

### 1.2.2 固有の機能

標準 C++ ライブラリの STL 部分はオブジェクト指向ではありません。したがって、オブジェクト指向のプログラミングに慣れている場合は、調整が必要になることがあります。データのカプセル化やオブジェクトの機能は、オブジェクト指向のプログラミングに固有のものです。ただし、標準 C++ ライブラリでは、データ構造は、処理に使用されるアルゴリズムから独立しています。

この機能によって、短いソースコードや、従来のオブジェクトと同様に C++ ポインタや配列と共にアルゴリズムを使用する柔軟性といった利点がもたらされます。また、問題を解決するための直接的で基本的なアプローチが作成されるため、より効果的なコード化や高速実行を行うことができます。

標準 C++ ライブラリ を使用することによる不便な点は主に、エラーの発生する可能性が増加することです。たとえば、ライブラリの反復子の誤った組み合わせや無効であることは許されません。マルチスレッド化環境における反復子をスレッド間で共有される前にラップする必要があります。テンプレートによって診断が不正確になったり、コードが予想外に長くなる可能性がありますが、このような問題は、ライブラリの使用経験や独自のコンパイラによって減少させることができます。

### 1.2.3 Tools.h++ との関係

Rogue Wave の標準 C++ ライブラリの実装では、Tools.h++ と共に使用することが認められています。Rogue Wave Tools.h++ の 7.0 以上では、標準 C++ ライブラリがオブジェクト指向のインタフェースと共にカプセル化されます。Tools.h++ と標準 C++ ライブラリを共に使用することで、低レベルの汎用プログラミングとオブジェクト指向の両方の利点がもたらされるように設計されています。

また、Tools.h++ には、時刻、日付、正規表現クラスといった標準には含まれない機能や、拡張文字列、オブジェクトの持続性、仮想ストリームが含まれます。新製品の Tools.h++ Professional では、Java 相互運用、ネットワーク、CORBA のモジュールの採用により、従来の Tools.h++ の機能が拡張されています。標準 C++ ライブラリに直接アクセスすることなく、Tools.h++ と Tools.h++ Professional を使用できるため、多数のプログラミングタスクがある場合は非常に便利です。

### 1.2.4 互換性の問題

この標準 C++ ライブラリの実装は、以前の 2.x の実装と大部分で互換性がありますが、バージョン 1.x とはほとんど互換性がありません。

コンパイラやライブラリのベンダーによっては、ANSI/ISO 標準で定義されている言語機能の一部を実装していない場合があるため、注意が必要です。『標準 C++ ライブラリ・ユーザーズガイド』および『標準 C++ ライブラリの入出力とロケール』では、このことが問題となる可能性のあるコードの場所を特定しています。ベンダーが標準に完全には準拠していない場合は、『標準 C++ ライブラリ・ユーザーズガイド』で説明している手法の一部が使用できない場合があります。ただし、標準 C++ 言語のすべての機能を説明するために、このような手法も記載しています。コンパイラが標準に準拠している割合が高いほど、このマニュアルを有効に使用することができます。

Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。
OEM リリース, 1998 年 6 月