vector <int> V []和vector <vector <int>> V之间的差异

Sak*_*med 15 c++ arrays vector multidimensional-array

vector <int> V[]vector< vector<int> > V两者都是2D阵列.

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

sha*_*ats 31

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

vector< vector<int> > V矢量的矢量.

使用数组是C风格的编码,使用向量是C++风格的编码.

引用cplusplus.com,

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

就像数组一样,向量使用连续的存储位置作为元素,这意味着它们的元素也可以使用常量指向其元素的偏移来访问,并且与数组一样有效.但与数组不同,它们的大小可以动态变化,其存储由容器自动处理.

TL; DR:

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

当你想用工作动态数组std::vector,你可以使用 vector< vector<int> > V.

  • @BenVoigt我没有说它不是C++,我在谈论编码风格. (14认同)
  • 我更喜欢`std :: array <vector <int>,n>````数组的长度超过`std :: array <vector> []`后者是`C`风格的错误和` C++`样式编码. (10认同)
  • @tillaert:谁给你的想法是内置类型是"不是C++"? (3认同)

Mar*_*cin 12

一个区别是虽然两者都可以以相同的方式初始化,例如

vector<int> V1[]        {{1,2,3}, {4,5,6}};
vector<vector<int>> V2  {{1,2,3}, {4,5,6}};
Run Code Online (Sandbox Code Playgroud)

和访问

cout << V1[0].back() << endl;
cout << V2[0].back() << endl;
Run Code Online (Sandbox Code Playgroud)

V1无法成长.你不能使V1.push_back(...)不是矢量对象.它只是一个阵列.第二个是动态的.您可以随意种植它.

  • 此外,您无法复制或分配第一个. (2认同)