vector
一.概念:
vector 是 C++标准库提供的变长数组类型,可以像数组一样进行数据存储和访问,但不需要指定 vector 长度,会根据需要自动扩展容量; 内部存储方式与数组相同,是一段连续的存储空间。
注:vector 类似 string,拥有很多函数,可以对 vector 进行快速操作
二. vector 使用
1.头文件:
2.vector 定义:
①vector<数据类型> vector名;
②vector<数据类型> vector数组名[数组大小];
3.vector初始化
①定义一个 vector 变量 v1并初始化为 v
等价
②定义一个 vector 变量v初始化为n个相同的常量
vector<数据类型> v(n,数据类型常量);
③定义一个 vector 变量v初始化为n个元素初值为 0的常量
vector<数据类型> v(n);
3.添加元素
格式:v.push_back(x) ;
功能:在 v 的尾部添加新元素 x (v 是什么类型 x就是什么类型)
4.元素引用(下标从 0 开始)
①引用方式
v[i] //下标访问 使用 v 中下标为 i 的元素
v.front() //访问首元素
v.back() //访问尾元素
②举例
5.vector基础函数
①pop_back()
格式:v.pop_back() ;
功能:删除尾元素 (多个删除可以用 erase)
②size()
格式:v.size() ;
功能:计算当前 v 的长度 (计算出 v 中当前有多少个元素)
③empty()
格式:v.empty() ;
功能:判断当前的 v 是否为空,如果是空返回 true,否则返回 false
④resize()
格式:v.resize(t) ;
功能:将 v 的长度设置为 t,不够的扩展,多的删除
⑤clear()
格式:v.clear() ;
功能:清空 vector 变量,清除 v 中所有元素
6.迭代器
①vector 迭代器定义
vector<数据类型>::iterator iter;
迭代器 iter:用于指向 vector 中元素的位置 (注意:位置是地址不是下标)
②迭代器的使用
v.begin();//返回指向 v 中第一个元素的迭代器
v.end();//返回指向最后一个元素下一个位置的迭代器
③使用迭代器访问元素
*iter;//访问当前 iter 指向的元素
三.vector 拓展函数
1.插入函数
格式:v.insert(iter,val) ;
功能:在迭代器 iter 所指向的元素前面插入数字 val
此时 iter 指向的元素和后面的所有元素后移一位
2.删除函数
①删除一个元素
格式:v.erase(iter) ;
功能:删除 iter 所指向位置的元素
②删除多个元素
格式:v.erase(iter1,iter2) ;
功能:删除[iter1,iter2)之间的所有元素,包含 iter1 指向的元素,不包含 iter2 指向的元素
3.vector 排序
格式:sort(v.begin(),v.end(),cmp);//省略 cmp 默认从小到大排序
功能:对 vector 变量 v 中所有元素按照 cmp 排序规则进行排序
注:所有可以用下标访问的容器都可以用 sort 进行排序
4.迭代器使用 (获得相应元素位置)
v.begin()+ i,可以获 得对应元素 v[i]的位置
如:v.begin()+2 就是v[2]的位置
或者通过 v.end()-i,也可以获得相应元素的位置 (或者说获得相应元素的迭代器)
四.vector 使用场合
1.不确定数组大小
2.需要进行删除,随时添加元素等操作时,使用 vector,利用相关函数可以快速实现
举例