动态数组是指会自动扩充空间,其采用的也是动态内存。
空间达到上限,添加元素时:
若后面还有未被使用的动态内存空间,则会在后面继续扩充。
但是如果,后面没有未被使用过的动态内存就不是直接扩充了。而是重新开辟一块更大的空间,将原来的元素值拷贝到
更大的那块空间内,并加上新加入的元素值。
默认构造函数的元素个数(size)为0,所占内存空间(capacity)为0。因此:
在默认构造的容器中(比如v1)插入数据后,size和capacity不一定相同。
vector<int> v2(10); //构造时就分配空间,size和capacity相等,同时插入十个元素,元素的值都为0.
vector<int> v2(10, 666); //构造,且将值都赋值为666
vector<int> v3(v2); //拷贝构造函数
vector<int> v4(v2.begin()+3, v2.end()); //v2.begin()是迭代器,本质是指针。选取这段区间来构造。
int test[ ] = {1, 2, 3, 4, 5}; vector<int> v5(test, test+2); //只传入 1, 2 两个元素。
赋值的时候,capacity不一定会和size一起改变。原本capacity很大时,赋值一个在capacity范围内的多个元素时,
仅仅是size改变,capacity并不会改变。(不会重新开辟新空间。)
返回类型为空, int && _Val是指对右值的引用,这是c++11新特性。
标签:容器,capacity,元素,v2,vector,空间,size From: https://www.cnblogs.com/ylww/p/16707448.html