标准库类型vector | 基本操作
写在前面:vector对象相对数组来说,用起来比较方便也很实用。数组需要提前确定范围,作为容器的vector就很方便,并且有更多实用性的操作。复习一下这块内容,也是很有帮助的。
定义与初始化vector
vector不是一个类型而是一个模板,因而可以随意使用任意类型的vector。
只需要引入头文件vector就能使用,先记录一些常用的操作。
vector<int> ivec; //ivec保存int类型对象
vector<vector<string>> file;
vector<int> v1; //V1空vector,潜在元素是int类型
vector<int> v2(v1); //V1拷贝到V2
vector<int> v3(10, -1); //N个val
vector<int> v4(10); //初始化10个元素,其值为0
vector<int> v5{ 10 }; //初始化1个元素,其值为10
构造还是初始化
有时候,我们需要提前初始化一个vector对象,但是不同类型的元素通常有不同的操作。此处也有一些例子:
//简单记,使用括号表示构造vector;而花括号表示初始化vector。
//如果是string类型的vector,使用花括号相当于构造vector对象
vector<string> v8{ 10,"hi" };
//如果是带了引号,就是初始化
vector<string> v9{ "10","hi" };
比较有意思的是,一般花括号是用于初始化vector对象的,就像数组一样;也有例外情况,不过也特别容易理解。当元素类型是string的时候,使用花括号初始化的字面值是要带双引号的,如果没有遇到双引号的数字,那么就表示构造了。
向vector对象添加元素
既然说到vector和数组有比较相似的地方,那么添加元素也是差不多的。可以使用循环,像数组一样一个一个的添加元素。
//向vector添加元素
for (int i = 0; i < 100; i++)
{
v1.push_back(i);
}
当然,也可以使用函数,在元素后面继续添加元素。
vector<string> text;
string word = "haha";
text.push_back(word);
其他的vector操作
C++中封装了很多函数,我们可以使用这些函数方便的操作vector对象。列出一些其他常用的操作。
//其他的vector操作
v.begin(); //vector首元素
v.end(); //vector莫
v.empty(); //判断元素是否为空
v.size(); //返回vector的长度
v.push_back(10);
v[10];
参考书目《C++ Primer 5th》