C++標準テンプレートライブラリ_note(1)

2417 ワード

シーケンシャルコンテナ:
  • vectorは、後ですばやく挿入および削除し、任意の要素(ランダムアクセス)
  • に直接アクセスします.
  • dequeは、前または後からすばやく挿入および削除され、任意の要素(ランダムアクセス)
  • に直接アクセスします.
  • listデュアルチェーンテーブル、
  • をどこからでも挿入および削除
    関連コンテナ:
  • setクイック検索で、重複値は許可されません.
  • multiset高速検索で、値の重複を許可します.
  • mapの一対のマルチマッピングは、キーワードに基づいて迅速に検索され、重複値は許可されません.
  • multimapの一対のマルチマッピングは、キーワードに基づいて迅速に検索され、値の重複を許可します.

  • コンテナアダプタ:
  • stack後進先出(スタック)
  • queue先進先出(キュー)
  • priority queue優先度が最も高い先行列
  • vector(ベクトルコンテナ)
    動的配列に相当する線形順序構造.作成すると、メモリに連続したスペースが自動的に割り当てられて格納されます.サイズは予め指定しておくこともできます(capacity()このサイズを返すこともできます).サイズが予め割り当てられた領域を超えるとメモリが再申請されますが、このような割り当てには時間がかかります(そのため、必要なサイズを考慮すると時間を節約できます).スペースを再割り当てすると、次のようになります.
  • まず、より大きなメモリ
  • を申請します.
    その後、
  • は、元のデータを新しいメモリブロックにコピーする.
  • は次に、元のメモリブロック内のオブジェクトを破棄する.
  • は最後に元の空間を解放した.したがって、元のデータ量が大きいと、このような操作はパフォーマンスを低下させます.ダイナミック配列ですが、vectorの性能を最大限に発揮するには、データのサイズを予め知っておく必要があります.

  • 特徴:
  • 動的拡張
  • ランダムアクセス
  • 省スペース(連続ストレージ、大断片化が少ない)
  • 内部挿入削除の効率が低い(シーケンステーブル)
  • .
  • は末尾でのみpush,pop
  • は、パフォーマンスを最適化するために適切なサイズを予め割り当てることができる
  • .
    コンストラクタ
    vector<int> v1 //    vector
    vector<int> v2(5,1)//   5  1 vector
    

    割り当てまたは比較を行う
    ==, !=, <=, >=, <, >
             => []
        vector  :
        -   vector    
        -         
            
    

    assign()要素に値を割り当てる
    // [start,end)        vector
    void assign(input_iterator start,input_iterator end);
    // num   value    vector ,    vector     
    void assign(size_type num, const type &val)
    

    at()指定位置要素を返す
    // v[i]   ,   v[i]  
    TYPE at(size_type loc);
    

    back()最後の要素begin()を返して最初の要素を返す反復器clear()すべての要素empty()をクリアして、空end()が最後の要素を返す反復器(最後の要素の次の位置を指す)erase()が指定された要素を削除するかどうかを判断します.
    //  loc   
    erase(iterator loc);
    //  start end     
    erase(iterator start,iterator end);
    

    front();最初の要素の参照get_を返します.allocator();vectorを返すメモリディスペンサinsert()挿入要素
    // loc   val,          
    insert(iterator loc ,const TYPE &val);
    // loc   Num   val   
    insert(iterator loc,size_type num,const TYPE &val);
    // loc   [start,end)     
    insert(iterator loc,iterator start,iterator end);
    

    max_size()は、収容要素数の上限popを返します.back()最後の要素push_を削除back()末尾に要素rbegin()末尾逆反復器rend()ヘッダ逆反復器reserve()を挿入して最小収容空間を設定します(初期化に似ています..)resize()サイズ変更size()戻りサイズswap()交換vector