标准库vector
vector是类模板,用来表示相同类型对象的集合,因此也叫容器。
1.定义和初始化vector对象
①vector对象有以下几种初始化方法:
- 直接初始化:
vector<int> v1(10,1); //v1包含10元素,全是1
- 拷贝初始化:
vector<int> v2(v1); //拷贝初始化,用v1来初始化v2
- 默认初始化:
vector<int> v3; //默认初始化,v3为空
- 列表初始化:
vector<int> v4{1,2,3}; //列表初始化,v4包含三个元素,分别为1,2,3
vector<string> v5={"ab","bc"}; //列表初始化,包含2个字符串"ab"和"bc"
- 值初始化:
vector<int> v6(10); //值初始化,包含10个值初始化为0的元素
②列表初始值还是元素数量
初始化的真实含义依赖于传递初始值用的是花括号还是圆括号。 用一个整数来初始化vector时,整数的含义可能是对象的容量或者是元素的值,通过花括号或圆括号的使用可以区分。
vector<int> v1(10); //值初始化,10个为0的元素
vector<int> v2{10}; //列表初始化,一个元素,值是10
vector<int> v3(10,1); //直接初始化,10个元素为1
vector<int> v4{10,1}; //列表初始化,有10和1两个元素
2.vector操作
2.1vector对象操作
①vector常用操作
- v.empty() 如果v不含有任何元素,返回真
- v.size() 返回v中元素的个数
- v.push_back(t) 向v的尾端添加一个值为t的元素
- v[n] 返回v中第n个位置上元素的引用
- v1=v2 用v2总元素的拷贝替换v1中的元素
- v1==v2 v1和v2相等为真
- v1!=v2
- <,<=,>,>= 字典顺序比较
②向vector对象中添加元素
对vector初始化的方式适用于以下三种情况:
- 初始值已知且数量较少
- 初始值是另一个vector对象的副本
- 所有元素的初始值都一样
但是,常见情况是创建vector时不知道其元素个数和值,或者总量很大且各不相同,这是初始化会很繁琐,对此来说,更好的处理方式是:先创建一个vector,然后利用push_back(尾插法)向其中添加元素。
2.2vector对象元素操作
①如果要处理vector对象中中所有元素,用范围for语句
例如,打印vector中每个元素
vector<string> v{"aa","bb","cc"};
for (auto s : v) {
cout << s << " ";
}
②利用下标运算符
vector的empty和size返回的类型也是size_type,要使用size_type,需先指定它是由那种类型定义的。如:
vector<int>::size_type; //正确
vector::size_type; //错误
跟string一样,使用下标运算符,返回的是vector元素的引用。并且使用下标运算符有两个前提条件:
- vector对象不为空
- 下标范围大于等于0且小于v.size()
需要注意的是vector对象(包括string对象)的下标运算符可用于访问已存在的元素,而不能用于添加元素。