STL-標準テンプレートライブラリ--概要

2891 ワード

STL–標準テンプレートライブラリ
#include      //   
  • STL(Standared Template Library)は標準テンプレートライブラリであり、HPラボが開発した一連のソフトウェアの総称である.彼はAlexader Stepanov、Meng Leng Lee、David R MusserがHPラボで働いている間に開発した.
  • STLは主にいくつかの“容器”の集合で、これらの“容器”はlist、vector、set、mapなどがあって、STLもアルゴリズムとその他のいくつかのコンポーネントの集合で、世界のトップクラスのC++プログラマーの長年の傑作で、汎用的なプログラミングの1つの経典の例
  • です
  • STLの目的は、コンポーネントを標準化することであり、再開発することなく、既存のコンポーネントを使用することができる.STLはC++の一部であり、C++コンパイラに内蔵されているため、
  • を追加でインストールする必要はありません.
  • STLは6つの部分に分けることができる:
  •   (containers)
       (iterators)
         (allocator)
       (adapters)
      (algorithms)
       (functors)
    

    STLの概要
  • 容器
  • 特殊なデータ構造は、配列、チェーンテーブル、キューなどを実現し、実質的にテンプレートクラスである.
  • 各容器には、プログラムの様々なニーズを満たすために、STLには複数の容器タイプが用意されているという利点と欠点がある.

  • 反復器
  • 複雑なポインタで、コンテナ内のオブジェクトを読み書きすることができ、実質的にテンプレートクラスである.
  • は、オブジェクトクラスタを巡回する要素であり、オブジェクトクラスタはコンテナであり、コンテナの一部である可能性がある.
  • の主な用途は、コンテナに小さな共通インタフェースのセットを提供することであり、このインタフェースを利用して、ある操作がクラスタ内の次の要素
  • を行うことができる.
  • アルゴリズム
  • コンテナオブジェクトを読み書きする論理アルゴリズム:ソート、遍歴、検索など、実質的にテンプレート関数
  • である.
  • すべてのコンテナの反復器は一貫したインタフェースを提供し、反復器の協力によってアルゴリズムプログラムは任意のコンテナに使用することができる.

  • スペースコンフィギュレータ
  • コンテナの空間配置管理テンプレートクラス
  • アダプタ
  • コンテナ、擬似関数、反復器インタフェース
  • を修飾するために使用される
  • コンポーネント間の関係
  • コンテナは構成器を通じてデータ格納空間を取得し、アルゴリズムは反復器を通じてコンテナ内容にアクセスし、シミュレーション関数はアルゴリズムが不要な戦略変化を完成するのに協力することができ、アダプタは修飾したり、シミュレーション関数をセットしたりすることができる.

  • STLの重要な特徴はデータ構造とアルゴリズムの分離である.この分離はSTLを非常に汎用的な
  • にする.
  • STLのもう一つの重要な特性は、オブジェクト向けではないことです.十分な透過性を有するために、STLは、パッケージ、継承、およびマルチステートではなく、主にテンプレートに依存する.

  • ひょうじゅんようき
  • STL標準テンプレートライブラリは汎用プログラミングです.汎用プログラミングはアルゴリズムに注目し,C++ではテンプレートを用いてデータ型とは独立したコードの記述を完了する.
  • STLコンテナは、配列、チェーンテーブル、キューなどを含む.検索、ソート、ランダムキューなどができます.
  • STLシーケンスコンテナ:vector、deque、list
  • STL関連コンテナ:set、mulitiset、map、mulitimap
  • STL反復器:iterator
  • STLシーケンスコンテナ
  • vector
  • 要素を1つの動的配列に配置して管理し、要素をランダムにアクセス(インデックスで直接アクセス)することができ、配列の末尾に要素を追加または除去するのは非常に速いが、中部または頭部に要素を挿入するのは比較的時間がかかる
  • .
  • deque
  • は「double-ended queue」の略で、ランダムに要素にアクセスできます(インデックスで直接アクセスできます)、配列のヘッダとテールの追加とテールの追加または削除は非常に高速ですが、中部またはヘッダに要素を挿入するのに時間がかかります
  • list
  • 双方向チェーンテーブルは、ランダムアクセス(アクセスが必要な要素まで順番に進む)を提供せず、任意の位置で挿入または削除動作を実行するのは非常に迅速で、内部ではポインタ
  • を調整するだけである.

    STL関連コンテナ
  • set/multiset
  • 内部の要素はその値に基づいて自動的にソートされ、set内の同じ数値の要素は一度しか現れず、multisets内には同じ数値の要素が複数含まれ、内部は二叉木で実現され(実際には赤黒樹(RB-tree)に基づいて実現され、検索しやすい.

  • map/multimap
  • mapの要素はペアのキー値/実値であり、内部の要素はその値に基づいて自動的にソートされ、map内の同じ数値の要素は一度しか現れず、Multimap内には同じ数値の要素が複数含まれ、内部は二叉木で実現され(実際には赤黒樹に基づいて実現)、
  • を検索するのに便利である.
  • 他のコンテナ:
  • hash_map,hash_set,hash_multiset,hash_multimap


  • チュートリアルのアドレス:
  • https://www.runoob.com/?s=STL
  • http://c.biancheng.net/stl/