标准库类型vector
标准库类型vector表示对象的集合
当不清楚元素个数时,常用vector
头文件
#include <vector>
using std::vector
注意:vector 是模板,不是类型。由vector生成的类型必须是包含在vector中元素的类型,如 vector<int>
初始化
初始化 | 意义 |
---|---|
vector< T > v1 | v1 是一个空vector,潜在元素为T类型,为默认初始化 |
vector< T > v2 (v1) 或 vector< T > v2 = v1 | v2中包含有v1所有元素的副本 |
vector< T > v3 (n, val) | v3中包含了n个重复元素,每个元素的值都是val |
vector< T > v4 (n) | 包含了n个重复的执行了值初始化的对象 |
vector< T > v5{a,b,c…} 或 vector< T > v5={a,b,c…} | v5包含初始值个数的元素,每个元素被赋予相应的初始值 |
初始化时可以只提供 vector 对象容纳的元素数量。此时库会有值的初始化,初始化值由类型决定。int 类型是0,string 类型是空。
例:
vector< string > v7{10}----->v7里面有10个默认初始化的元素。因为{}是用来列表初始化的,但是类型是string,10是整数,所以考虑10是元素初始化。
向vector对象中添加元素
push_back 负责把一个值当成vector对象的尾元素 “压到(push)” vector 对象的 “尾端(back)”。
用法:
vector对象 + “.” + push_back(要添加的内容)
vector<int> v2;
for(int i=0;i!=100;i++)
v2.push_back(i); //依次把整数值放到v2尾端
注意:若循环体内包含向 vector 对象添加元素的语句,则不能使用 “范围 for循环”
其他操作
操作指令 | 意义 |
---|---|
v.empty() | 不含元素,返回1,否则0 |
v.size() | 返回 v 中元素个数 |
v.push_back(t) | 向 v 尾端添加元素 t |
v[n] | 返回 v 中第 n 个位置上的元素 |
v1 = v2 | v2 的值拷贝到 v1 |
v1 = { a, b, c… } | 用列表中的值替换v1中的值 |
v1 == v2 | v1 和 v2 相等且仅当他们元素数量相同且对应位置的元素值都相同 |
v1 != v2 | |
<, <=,>,>= | 以字典顺序进行比较 |
vector::size_type是unsigned型的
索引
vector 的下标是从0开始的,同样是使用下标运算符 " [ ] "
注意:当开始定义的 vector 是空的时候,不能用下标索引去添加元素!!!!