牛骨文教育服务平台(让学习变的简单)
博文笔记

vector<int>G[] 和 vector<vector<int> G 的区别

创建时间:2016-11-13 投稿人: 浏览次数:1497

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

stackflow 网站

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

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.


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




11down vote

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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。