C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

STLとC++標準ライブラリの違いは何ですか?


標準テンプレートライブラリ(STL)は、C++標準ライブラリの多くの部分に影響を与えたC++プログラミング言語用のソフトウェアライブラリです。アルゴリズム、コンテナ、関数、イテレータと呼ばれる4つのコンポーネントを提供します。 「STL」または「標準テンプレートライブラリ」という用語は、ISO 14882C++標準のどこにも表示されないことに注意してください。したがって、C ++標準ライブラリをSTLと呼ぶのは間違っています。つまり、STLとC ++標準ライブラリは2つの異なるものであり、前者は後者のサブセットです。

STLは

で構成されています コンテナ

STLには、シーケンスコンテナと連想コンテナが含まれています。コンテナは、データを格納するオブジェクトです。標準のシーケンスコンテナには、vector、deque、およびlistが含まれます。標準の連想コンテナは、set、multiset、map、multimap、hash_set、hash_map、hash_multiset、およびhash_multimapです。コンテナアダプタのキュー、priority_queue、スタックもあります。これらは特定のインターフェイスを備えたコンテナであり、他のコンテナを実装として使用します。

イテレータ

イテレータは、プログラマーがコンテナーをトラバースできるようにするオブジェクトです。 STLは、5つの異なるタイプのイテレータを実装します。入力(値のシーケンスの読み取りに使用)、出力(値のシーケンスの書き込みに使用)、順方向(読み取り、書き込み、および順方向に移動可能)、双方向(順方向のように)イテレータですが、後方に移動することもできます)およびランダムアクセス(1回の操作で任意の数のステップを自由に移動できます)。イテレータは、STLの一般性を可能にする主要な機能です。

アルゴリズム

STLのアルゴリズムは、さまざまな要素で使用するために特別に設計された関数のコレクションです。範囲とは、配列や一部のSTLコンテナーのインスタンスなど、イテレーターまたはポインターを介してアクセスできるオブジェクトのシーケンスです。 STLのアルゴリズムの例:sort(範囲内の要素を並べ替える)、binary_search(値が並べ替えられた順序で存在するかどうかをテストする)、min_element(範囲内の最小の要素を返す)など。これらのアルゴリズムはすべて、受け入れられる任意のデータ型に適用できることに注意してください。テンプレートとして。

C ++プログラミング言語では、C ++標準ライブラリはクラスと関数のコレクションであり、コア言語とC++ISO標準自体の一部で記述されています。 C ++標準ライブラリは、いくつかの汎用コンテナ、これらのコンテナを利用および操作するための関数、関数オブジェクト、汎用文字列とストリーム(インタラクティブおよびファイルI / Oを含む)、いくつかの言語機能のサポート、および正方形の検索などの日常的なタスクのための関数を提供します数値のルート。以下は、C++標準ライブラリの機能の一部です-

ストリーム

これらのライブラリは、C++で使用可能なさまざまなタイプのストリームを処理するために使用されます。たとえば、ストリームは一般にファイルストリームを表し、このクラスはファイルの作成、ファイルへの情報の書き込み、ファイルからの情報の読み取りに使用できます。ストリームは文字列ストリームを表し、一般に文字列の操作などに使用されます。

コンテナ

これは、ベクトル、セット、マップ、スタック、キューなどのさまざまなデータ型にデータを格納するために使用されるクラスのコレクションです。これらはSTLのコンポーネントです。

一般的なライブラリ

アルゴリズム、時間のクロノ、イテレータ、メモリなどのライブラリ

数値ライブラリ

このライブラリは、C++プログラムが半数値演算を実行するために使用できるコンポーネントのコレクションです。たとえば、はクラステンプレートを定義し、複素数を表現および操作するための多数の関数、は(疑似)乱数の生成などに使用されます。

スレッド化 これはC++11で導入されたライブラリで、基本的に同時実行性を扱います。

C標準ライブラリ

C標準ライブラリの各ヘッダーは、.hを削除し、先頭に「c」を追加することで生成された、異なる名前でC++標準ライブラリに含まれています。たとえば、「time.h」は「ctime」になります。


  1. C ++の#defineとconstキーワードの違いは何ですか?

    #defineディレクティブはプリプロセッサディレクティブです。プリプロセッサは、コンパイラがマクロを認識する前に、これらのマクロを本体に置き換えます。これは、ソースコードの自動検索と置換と考えてください。 const変数宣言は、言語で実際の変数を宣言します。これは、実際の変数のように使用できます。アドレスを取得し、渡し、キャストし、変換します。 コンパイラの最適化がないと、さまざまなケースでこれらの両方に関連するメモリ割り当ての隠れたコストが発生します。しかし、適切に最適化すれば、それらはほぼ同じになります。また、プリプロセッサマクロにはスコープがありませんが、const値にはスコープがあ

  2. C ++標準テンプレートライブラリ(STL)

    標準テンプレートライブラリは、C++標準ライブラリのいくつかの部分に影響を与えたC++プログラミング言語用のソフトウェアライブラリです。アルゴリズム、コンテナ、関数、イテレータと呼ばれる4つのコンポーネントを提供します。 「STL」または「標準テンプレートライブラリ」という用語は、ISO 14882C++標準のどこにも表示されないことに注意してください。したがって、C ++標準ライブラリをSTLと呼ぶのは間違っています。つまり、STLとC ++標準ライブラリは2つの異なるものであり、前者は後者のサブセットです。 STLは-で構成されます コンテナ STLには、シーケンスコンテナと連想コンテナ