一、定义和初始化vector
1、初始化
vector是
模板
而非类型,由vector生成的类型必须包含vector中元素的类型。如vector < int >。
1、默认初始化
vector<string> s;
2、拷贝初始化
注意:字面值不能构造vector对象
vector<int> i;
vecotr<int> i2(i);
vector<int> i3 = i;
vector<int> i4 = 10; //error
vecotr<string> i5(i); //error:类型必须匹配
3、使用初始化列表
vector<int> a = {1,2,3,4,5};
vector<int> a2{1,2,3,4,5};
vector<int> a3(1,2,3,4,5); //error:拷贝时只能有一个初始值
4、使用指定大小进行值初始化
std::vector<int> vec(10); // 10个int元素,每个都初始化为0
5、使用指定大小和值进行初始化
vector<int> a(10, 1);
2、两个注意
注意1:区别
花括号
和圆括号
初始化
vector<int> v1(10); //10个元素,都是0
vector<int> v2{10}; //1个元素,10
vecotr<int> v3(10, 1);//10个元素,都是1
vecotr<int> v4{10, 1};//2个元素,10和1
注意2:使用了花括号初始化列表,但是值不能用来列表初始化,需要考虑构造初始化
vector<string> v5{"hello"};
vector<string> v6("hello");
//不能用字面值进行构造初始化
vector<string> v7{10};
//使用int进行初始化,类型不符,需要考虑构造初始化,结果是10个默认初始化的元素
//相当于vector<string> v7(10);
vector<string> v8{10, "hello"};
//使用列表初始化,第一个元素值不是string类型,需要考虑是否为构造初始化,结果是10个hello。
//相当于vector<string> v8(10, "hello");
二、向vector中添加元素
上面初始化适用于初始元素较少的时候,元素多了一般定义一个空的vector,再用push_back
进行添加。在C++中,vector可以高效增长
,所有尽量不给vector设置大小。
push_back方式添加元素
vector<int> a;
int num;
while(cin >> num)
{
a.push_back(num);
}
注意:不能使用下标添加元素
vector<int> a;
for(i = 0; i != 10; i++)
{
a[i] = i;
}
//error,a中本来不包括任何元素
三、其他vector操作
操作与string的其他操作相同。
注意,在进行下标操作的时候只能对已经存在的元素执行。尽量使用
范围for
语句,确保下标的合法
vector<int> a(10);
cout << a[9] << endl;
cout << a[9] << endl; //error:下标越界
标签:10,初始化,元素,初识,vector,error,hello
From: https://www.cnblogs.com/baobaobashi/p/18185028