您的位置:首页 > 编程语言 > C语言/C++

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

2016-11-13 11:17 393 查看
来自: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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++