web-dev-qa-db-ja.com

vector <int> V []とvector <vector <int>> Vの違い

vector <int> V[]およびvector< vector<int> > V両方とも2D配列です。

しかし彼らの違いとは何であり、これを別の場所で使用する場所はどこですか?簡単な説明をお願いします。

16
Sakib Ahammed

vector<int> V[]ベクトルの配列です。

vector< vector<int> > Vベクトルのベクトルです。

配列の使用はCスタイルコーディング、ベクトルの使用はC++スタイルコーディングです。

引用 cplusplus.com

ベクトルは、サイズを変更できる配列を表すシーケンスコンテナーです

配列と同様に、ベクトルは要素に連続した格納場所を使用します。つまり、要素への通常のポインターのオフセットを使用して要素にアクセスでき、配列のように効率的です。ただし、配列とは異なり、そのサイズは動的に変化する可能性があり、ストレージはコンテナーによって自動的に処理されます。

TL; DR

固定数std::vector要素を操作する場合は、vector <int> V[]を使用できます。

std::vector動的配列を使用する場合は、vector< vector<int> > Vを使用できます。

30
shauryachats

1つの違いは、どちらも同じ方法で初期化できるが、たとえば.

vector<int> V1[]        {{1,2,3}, {4,5,6}};
vector<vector<int>> V2  {{1,2,3}, {4,5,6}};

とアクセス

cout << V1[0].back() << endl;
cout << V2[0].back() << endl;

v1は成長できません。 V1.Push_back(...)はベクターオブジェクトではないため、作成できません。その単なる配列。 2つ目は動的です。好きなように育てることができます。

12
Marcin

ベクトルV []は単なる固定配列です。したがって、上限までしか追加/変更できません。それ自体はベクターではないため、サイズ制限が固定されています。ただし、vector <vector> Vは動的ベクトルであり、そのサイズは動的に増加できます。

0
Arvind Sharma