下面是vector的几种初始化的形式,需要注意的是,在vector中都是用 v.begin(),v.end(),v.begin()+ 1 之类的来表示地址,没有直接用 v 的,这点说明iterator和指针的共同之处。
代码为:
#include <algorithm>
#include <iostream>
#include<functional>
#include<vector>
using namespace std;
int main()
{
vector<int> v1 = {3,2,1,4};
sort(v1.begin(),v1.end());
cout << "v1 = {3,2,1,4}初始化并排序后为: ";
for (int i = 0; i < v1.size(); i++)
cout << v1[i] << " ";
cout << endl;
vector<int> v2(4);
cout << "vector<int> v2(4)默认4个数赋值为0为: ";
for (int i = 0; i < v2.size(); i++)
cout << v2[i] << " ";
cout << endl;
//下面是两种直接复制v1的操作,但只能在初始化时使用
//不能有 v2 = v1 或者 v2(v1) 这种形式的直接赋值操作
vector<int> v3 = v1;
cout << "vector<int> v3 = v1后的v3: ";
for (int i = 0; i < v3.size(); i++)
cout << v3[i] << " ";
cout << endl;
vector<int> v4(v1);
cout << "vector<int> v4(v1)后的v4为: ";
for (int i = 0; i < v4.size(); i++)
cout << v4[i] << " ";
cout << endl;
//初始化复制一段v1,注意v1.begin() + 1 是所复制的元素的下一位,与sort函数都是一样的
vector<int> v5(v1.begin(),v1.begin() + 1);
cout << "vector<int> v5(v1.begin(),v1.begin() + 1)后的v5为 : ";
for (int i = 0; i < v5.size(); i++)
cout << v5[i] << " ";
cout << endl;
// copy 的使用,可以起到赋值的作用,注意这里不能缺少v1.size()否则会报错
vector<int> v6(v1.size());
copy(v1.begin(),v1.end(),v6.begin());
cout << "copy(v1.begin(),v1.end(),v6.begin())后的v6是: ";
for (int i = 0;i < v6.size(); i++)
cout << v6[i] << " " ;
cout << endl;
return 0;
}
结果为:
v1 = {3,2,1,4}初始化并排序后为: 1 2 3 4
vector<int> v2(4)默认4个数赋值为0为: 0 0 0 0
vector<int> v3 = v1后的v3: 1 2 3 4
vector<int> v4(v1)后的v4为: 1 2 3 4
vector<int> v5(v1.begin(),v1.begin() + 1)后的v5为 : 1
copy(v1.begin(),v1.end(),v6.begin())后的v6是: 1 2 3 4
请按任意键继续. . .