Difference between vector <int> V[] and vector< vector<int> > V

。_饼干妹妹 提交于 2020-01-09 09:49:05

问题


vector <int> V[] and vector< vector<int> > V both are 2D array.

But what is the difference between their and where we use this in different place?? Please give a brief explanation.


回答1:


vector<int> V[] is an array of vectors.

vector< vector<int> > V is a vector of vectors.

Using arrays are C-style coding, using vectors are C++-style coding.

Quoting cplusplus.com ,

Vectors are sequence containers representing arrays that can change in size.

Just like arrays, vectors use contiguous storage locations for their elements, which means that their elements can also be accessed using offsets on regular pointers to its elements, and just as efficiently as in arrays. But unlike arrays, their size can change dynamically, with their storage being handled automatically by the container.

TL;DR:

When you want to work with a fixed number of std::vector elements, you can use vector <int> V[].

When you want to work with a dynamic array of std::vector, you can use vector< vector<int> > V.




回答2:


One difference would be that although both can be initialized in the same way, e.g.

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

and accessed

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

the V1 can't grow. You cannot make V1.push_back(...) as its not a vector object. Its just an array. Second one is dynamic. You can grow it as you please.




回答3:


vector V[] is just a fixed array; and so you can add/modify only till the upper limit. It is not a vector per se, and so has a fixed size limit. However vector< vector > V is a dynamic vector and its size can be increased dynamically.



来源:https://stackoverflow.com/questions/28712364/difference-between-vector-int-v-and-vector-vectorint-v

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!