ベクトル

7616 ワード

ほとんどcplusplusのPappagoバージョンvectorタイトルは次のとおりです.
  • Vectorテンプレートクラス
  • vector特殊化クラス
  • begin (c++11)
  • end (c++11)
    2つのクラスと2つの関数があります.
  • std::vector


    ベクトルはシーケンスコンテナで、サイズを変更できる配列を示します.
    ベクトル連続記憶要素.したがって,ベクトルは配列のように通常のポインタのように効率的に要素にアクセスできる.ただし、配列とは異なり、メモリサイズはコンテナによって自動的に処理され、動的に変更されます.
    元の配列は、新しい要素が入力されるたびに再割り当てされ、値がコピーされます.しかし、これは処理時間の面で相対的に高価な仕事です.したがって、ベクトルはコンテナに要素を追加するたびに再割り当てされません.
    後部座席は、入力する要素の個数より大きい寸法値で動的に割り当てられ、メモリがいっぱいになると、より大きな新しい配置が動的に割り当てられます.次に、元の配列に含まれていた要素を新しい配列にコピーします.
    したがって、ベクトルは、効率的な管理とダイナミックな拡張ストレージの機能を提供するのではなく、アレイよりも多くのメモリを消費します.
    ベクトルアクセス要素は、他のダイナミックシーケンスコンテナ(インデックス、リスト、forward lists)と比較して非常に効率的で(配列と同様)、endに要素を追加または削除するのが効率的です.非end位置で要素を挿入または削除する操作では、反復器および参照のパフォーマンスは他の操作に及ばず、listsおよびforward listsよりも一貫性が低い.
    コンテナのプロパティ
  • シーケンス-メモリに順次格納されます.
  • Dynamicアレイ-要素に直接アクセスできます.最後の要素をすばやく追加/削除します.
  • ディスペンサ-ディスペンサを使用してストレージ要件を動的に処理します.
  • template < class T, class Alloc = allocator<T> > class vector; // generic template
    テンプレートパラメータ
  • T-要素のデータ型.
  • Alloc-メモリを割り当てるオブジェクト.デフォルトでは、最も単純なメモリ割当てモデルを定義し、値に依存しない割当て者クラステンプレートを使用します.
  • メンバーのタイプ
    template < class T, class Alloc = allocator<T> > class vector
    {
    public:
        typedef T                                        value_type;
        typedef Allocator                                allocator_type;
        typedef typename allocator_type::reference       reference;
        typedef typename allocator_type::const_reference const_reference;
        typedef implementation-defined                   iterator;
        typedef implementation-defined                   const_iterator;
        typedef typename allocator_type::size_type       size_type;
        typedef typename allocator_type::difference_type difference_type;
        typedef typename allocator_type::pointer         pointer;
        typedef typename allocator_type::const_pointer   const_pointer;
        typedef std::reverse_iterator<iterator>          reverse_iterator;
        typedef std::reverse_iterator<const_iterator>    const_reverse_iterator;
    }

    メンバー関数

  • 作成者
  • default (1)	
    explicit vector (const allocator_type& alloc = allocator_type());
    
    fill (2)	
    explicit vector (size_type n, const value_type& val = value_type(),
                     const allocator_type& alloc = allocator_type());
    
    range (3)	
    template <class InputIterator>
      vector (InputIterator first, InputIterator last,
              const allocator_type& alloc = allocator_type());
    
    copy (4)	
    vector (const vector& x);
    (1)デフォルトジェネレータの作成-要素のない空のコンテナ.
    (2)fillジェネレータ-n個の要素を使用してコンテナを作成する.各要素はvalのコピーです.
    (3)容器は,[first,last])のような同数の元素からなり,各元素はこの範囲内の対応する元素から同じ順序で構成される.
    (4)複製作成者-xの各要素の同じ順序でコンテナを構成する.
  • 消滅者
  • 演算子=
  • begin-は、最初の要素を指す重複文字を返します.
    重複文字はnon-contとconstなので、2つの関数もあります.
    iterator begin();
    const_iterator begin() const;
  • end-最後の要素の後の要素を指す重複文字を返します.何らの要因ではないので、逆参照にはなりません.コンテナが空の場合、beginと同じ結果が返されます.
    beginと同様に、2つのconst、non-const関数があります.
  • rbegin,rend−は、最後の要素と最初の要素を指すreverse iteratorをそれぞれ順番に返す.
    reverse iteratorもnon-contとconstの2つの関数なので、各関数にもnon-cont関数とconst関数の2種類があります.
  • size-要素の数を返します.戻りタイプはsize_type
  • max-size-は、ベクトルが持つことができる最大要素の数を返します.戻りタイプはsize_type
  • resize-nコンテナのサイズを調整して要素を含む.
    パラメータとして入力されたnが現在のコンテナのサイズより小さい場合、サイズはnで、後の要素は除去されます.
    nが現在のコンテナのサイズより大きい場合、残りのスペースは、最後に必要な任意の数の要素を挿入します.2番目のパラメータが指定されている場合、新しい要素は2番目のパラメータのコピーに初期化され、指定されていない場合は空の要素(value-insitized)に初期化されます.
    nコンテナの割り当てられたメモリサイズより大きい場合は、自動的に再割り当てされます.
  • capacity-現在のコンテナに割り当てられているメモリサイズを返します.
    必ずしも割当てのサイズに等しくない.
    戻りタイプはsize_type
  • empty-ベクトルが空であるかどうかを調べる関数です.
  • reserve-ベクトルの割り当てられたメモリサイズを変更する関数です.
    要求ベクトル容量は、少なくともn個の要素を含む.
    nが現在のベクトル容量より大きい場合、この関数は、コンテナ再割り当てメモリによってn(またはそれ以上)に容量を増加させる.
    他の場合、容量は変化しません.
    この関数はバックグラウンドが持つ要素に何の変化もありません.(resizeとは逆)
  • std::vector<bool>


    cplusplus
  • vector(header)