ベクトル
7616 ワード
ほとんどcplusplusのPappagoバージョンVectorテンプレートクラス vector特殊化クラス begin (c++11) end (c++11)
2つのクラスと2つの関数があります.
ベクトルはシーケンスコンテナで、サイズを変更できる配列を示します.
ベクトル連続記憶要素.したがって,ベクトルは配列のように通常のポインタのように効率的に要素にアクセスできる.ただし、配列とは異なり、メモリサイズはコンテナによって自動的に処理され、動的に変更されます.
元の配列は、新しい要素が入力されるたびに再割り当てされ、値がコピーされます.しかし、これは処理時間の面で相対的に高価な仕事です.したがって、ベクトルはコンテナに要素を追加するたびに再割り当てされません.
後部座席は、入力する要素の個数より大きい寸法値で動的に割り当てられ、メモリがいっぱいになると、より大きな新しい配置が動的に割り当てられます.次に、元の配列に含まれていた要素を新しい配列にコピーします.
したがって、ベクトルは、効率的な管理とダイナミックな拡張ストレージの機能を提供するのではなく、アレイよりも多くのメモリを消費します.
ベクトルアクセス要素は、他のダイナミックシーケンスコンテナ(インデックス、リスト、forward lists)と比較して非常に効率的で(配列と同様)、endに要素を追加または削除するのが効率的です.非end位置で要素を挿入または削除する操作では、反復器および参照のパフォーマンスは他の操作に及ばず、listsおよびforward listsよりも一貫性が低い.
コンテナのプロパティシーケンス-メモリに順次格納されます. Dynamicアレイ-要素に直接アクセスできます.最後の要素をすばやく追加/削除します. ディスペンサ-ディスペンサを使用してストレージ要件を動的に処理します. T-要素のデータ型. Alloc-メモリを割り当てるオブジェクト.デフォルトでは、最も単純なメモリ割当てモデルを定義し、値に依存しない割当て者クラステンプレートを使用します. メンバーのタイプ作成者
(2)fillジェネレータ-n個の要素を使用してコンテナを作成する.各要素は
(3)容器は,[
(4)複製作成者-消滅者 演算子= begin-は、最初の要素を指す重複文字を返します.
重複文字はnon-contとconstなので、2つの関数もあります. end-最後の要素の後の要素を指す重複文字を返します.何らの要因ではないので、逆参照にはなりません.コンテナが空の場合、beginと同じ結果が返されます.
beginと同様に、2つのconst、non-const関数があります. rbegin,rend−は、最後の要素と最初の要素を指すreverse iteratorをそれぞれ順番に返す.
reverse iteratorもnon-contとconstの2つの関数なので、各関数にもnon-cont関数とconst関数の2種類があります. size-要素の数を返します.戻りタイプは max-size-は、ベクトルが持つことができる最大要素の数を返します.戻りタイプは resize-nコンテナのサイズを調整して要素を含む.
パラメータとして入力されたnが現在のコンテナのサイズより小さい場合、サイズはnで、後の要素は除去されます.
nが現在のコンテナのサイズより大きい場合、残りのスペースは、最後に必要な任意の数の要素を挿入します.2番目のパラメータが指定されている場合、新しい要素は2番目のパラメータのコピーに初期化され、指定されていない場合は空の要素(value-insitized)に初期化されます.
nコンテナの割り当てられたメモリサイズより大きい場合は、自動的に再割り当てされます. capacity-現在のコンテナに割り当てられているメモリサイズを返します.
必ずしも割当てのサイズに等しくない.
戻りタイプは empty-ベクトルが空であるかどうかを調べる関数です. reserve-ベクトルの割り当てられたメモリサイズを変更する関数です.
要求ベクトル容量は、少なくともn個の要素を含む.
nが現在のベクトル容量より大きい場合、この関数は、コンテナ再割り当てメモリによってn(またはそれ以上)に容量を増加させる.
他の場合、容量は変化しません.
この関数はバックグラウンドが持つ要素に何の変化もありません.(resizeとは逆)
cplusplus vector(header)
vector
タイトルは次のとおりです.2つのクラスと2つの関数があります.
std::vector
ベクトルはシーケンスコンテナで、サイズを変更できる配列を示します.
ベクトル連続記憶要素.したがって,ベクトルは配列のように通常のポインタのように効率的に要素にアクセスできる.ただし、配列とは異なり、メモリサイズはコンテナによって自動的に処理され、動的に変更されます.
元の配列は、新しい要素が入力されるたびに再割り当てされ、値がコピーされます.しかし、これは処理時間の面で相対的に高価な仕事です.したがって、ベクトルはコンテナに要素を追加するたびに再割り当てされません.
後部座席は、入力する要素の個数より大きい寸法値で動的に割り当てられ、メモリがいっぱいになると、より大きな新しい配置が動的に割り当てられます.次に、元の配列に含まれていた要素を新しい配列にコピーします.
したがって、ベクトルは、効率的な管理とダイナミックな拡張ストレージの機能を提供するのではなく、アレイよりも多くのメモリを消費します.
ベクトルアクセス要素は、他のダイナミックシーケンスコンテナ(インデックス、リスト、forward lists)と比較して非常に効率的で(配列と同様)、endに要素を追加または削除するのが効率的です.非end位置で要素を挿入または削除する操作では、反復器および参照のパフォーマンスは他の操作に及ばず、listsおよびforward listsよりも一貫性が低い.
コンテナのプロパティ
template < class T, class Alloc = allocator<T> > class vector; // generic template
テンプレートパラメータ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
の各要素の同じ順序でコンテナを構成する.重複文字はnon-contとconstなので、2つの関数もあります.
iterator begin();
const_iterator begin() const;
beginと同様に、2つのconst、non-const関数があります.
reverse iteratorもnon-contとconstの2つの関数なので、各関数にもnon-cont関数とconst関数の2種類があります.
size_type
size_type
パラメータとして入力されたnが現在のコンテナのサイズより小さい場合、サイズはnで、後の要素は除去されます.
nが現在のコンテナのサイズより大きい場合、残りのスペースは、最後に必要な任意の数の要素を挿入します.2番目のパラメータが指定されている場合、新しい要素は2番目のパラメータのコピーに初期化され、指定されていない場合は空の要素(value-insitized)に初期化されます.
nコンテナの割り当てられたメモリサイズより大きい場合は、自動的に再割り当てされます.
必ずしも割当てのサイズに等しくない.
戻りタイプは
size_type
要求ベクトル容量は、少なくともn個の要素を含む.
nが現在のベクトル容量より大きい場合、この関数は、コンテナ再割り当てメモリによってn(またはそれ以上)に容量を増加させる.
他の場合、容量は変化しません.
この関数はバックグラウンドが持つ要素に何の変化もありません.(resizeとは逆)
std::vector<bool>
cplusplus
Reference
この問題について(ベクトル), 我々は、より多くの情報をここで見つけました https://velog.io/@hyenam/ftcontainers-vectorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol