vector <int> V []和vector&lt;之间的差异vector <int>&gt; V </int>的</int>的

时间:2015-02-25 06:11:39

标签: c++ arrays multidimensional-array vector

vector <int> V[]vector< vector<int> > V都是 2D数组

但是他们之间的区别是什么?我们在不同的地方使用它的地方是什么?请简要说明一下。

5 个答案:

答案 0 :(得分:30)

vector<int> V[]是一个向量数组

vector< vector<int> > V向量的载体。

使用数组是 C风格的编码,使用向量是 C ++ - 样式编码

引用cplusplus.com

  

向量是表示可以更改的数组的序列容器   大小

     

就像数组一样,矢量使用连续的存储位置   元素,这意味着他们的元素也可以使用   定期指向其元素的指针的偏移量,以及同样有效   如数组。但与数组不同,它们的大小可以动态变化,   他们的存储由容器自动处理。

<强> TL; DR

如果您想使用固定数量std::vector元素,可以使用vector <int> V[]

如果您想使用std::vector动态数组,可以使用vector< vector<int> > V

答案 1 :(得分:12)

一个不同之处在于,尽管两者都可以以相同的方式初始化,例如,

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 :(得分:2)

vector<vector<int>> v(26);是一个包含向量的向量。在此示例中,您有一个包含26个矢量的矢量。代码v[1].push_back(x)意味着x被推回到向量中的第一个向量。

vector<int> a[26];是向量数组。换句话说,包含26个整数向量的一维数组。代码a[1].push_back(x);已将x推回到数组的第一个索引。

答案 3 :(得分:0)

vector V []只是一个固定数组;所以你只能添加/修改直到上限。它本身不是矢量,因此具有固定的大小限制。 然而,矢量&lt;矢量&gt; V是动态矢量,其大小可以动态增加。

答案 4 :(得分:0)

vector<int> v[]是向量数组。也就是说,它是一个包含向量作为元素的数组。 因此,您不能更改数组部分的大小,但是我们可以在其元素中添加矢量。

例如,

1.vector<int> v1[] = {{1},{2},{3}};   // array that contains 3 vector elements.
2.vector<vector<int>> v2 = {{1},{2},{3}};  // vector that contains 3 vector elements.

因此,对于第一个来说,我们无法更改v的大小,但是由于它是向量,因此我们可以在其元素中添加或删除元素。

v1.push_back(4);   // this will give an error since we cannot the predefined size of array.
v1[1].push_back(4); // this is acceptable since we are changing the vector part.

这使v1 {{1},{2,4},{3}}

对于第二个,我们可以更改整体大小及其元素。

 v2.push_back(4);  // this is acceptable since it is vector.