vector有四种构造函数:
(1)默认构造,无需传参
vector<int> v1; //此时还没有分配空间
(2)vector<int> v2(n); //分配了空间,指定元素个数,默认值为0
vector<int> v2(n, -1); //指定元素个数和值
(3)构造函数传入两个参数,分别为一段序列的起始地址或迭代器和结束地址或迭代器。
int arr[5] = {2,2,2,3,2};
vector<int> v3(arr, arr+5);
vector<int> v4(v3.begin(), v3.end());
(4)拷贝构造函数,根据一个vector对象构建一个新的vector对象。
vector<int> v5(v4);
或vector<int> v6 = v5;
一般在创建一个新的对象时使用的就是深拷贝,即元素值相同,地址空间不同,而在使用一个vector对象进行值传递传参时,使用的就是浅拷贝,即形参是实参的一份临时拷贝。这往往是会出问题的,所以建议在使用vector作为参数时,尽量传引用。