向量vector
向量vector
1.几种向量的定义方式
(1) vector<int> vec 创建一个类型为int的空vector
(2) vector<int> vec(vec2) 复制创建一个和vec2数据完全相同的vec
(3) vector<int> vec = vec2;
(4) vector<int> vec(n,val) 创建一个包含有n个数据,值为val的元素
(5) vector<int> vec(n) 创建一个含有n个元素,值为默认初始值的元素
(6) vector<int> vec{1,2,3,4,5,6} 用1,2.....去初始化vec
(7) vector<vector<int>> 二维数组初始化
2.常用基础操作
v.empty() 如果 v 为空则返回 true,否则返回 false
v.size()返回 v 中元素的个数
v.push_back(val) 向 vector 的尾端添加值为 val 的元素。
注意:vector 不支持 push_front 操作。
v.pop_back(val)
删除尾元素,返回void。vector同样 不支持 pop_front 操作。若想在同时弹出元素的值,就必须在执行弹出之前保存它(可以使用 v.back())。
v[n] 返回 v 中第 n 个位置上元素的引用,不能用下标操作添加元素
v.back() 返回 v 中最后一个元素的引用
v.front() 返回 v 中第一个元素的引用
v1 = v2 用 v2 中的元素替换 v1 中的元素
v1 = {a, b, c...} 用元素 {a, b, c...} 替换 v1 中的元素
v1 == v2 当且仅当拥有相同数量且相同位置上值相同的元素时,v1 与 v2 相等
v1 != v2 自行体会
<, <=, >, >= 以字典序进行比较
2.插入操作
v.insert(p,n,val):在迭代器 p 之前插入 n 个值为 val 的元素,返回新添加的第一个元素的迭代器。
4.删除操作
v.erase(p) 删除迭代器p所指的元素,返回指向被删除元素之后元素的迭代器。
v.erase(b, e) 删除迭代器 b, e 之间的元素,返回指向最后一个被删除元素之后元素的迭代器。
5.排序sort
(1)sort(s.begin(),s.end());
//默认从小到大
(2)sort(s.begin(),s.end(),greater<int>());
//从大到小
(3)reverse(s.begin(),s.end());
//从大到小
6.消除相邻的重复元素unique()
unique(a.begin(), a.end());
7.找最值
最大值auto it = max_element(v.begin, v,end()),返回最大值的迭代器
最小值auto it = min_element(v.begin, v,end()),返回最小值的迭代器
相对位置大小auto b = distance(x, y),x、y 是迭代器类型,返回 x、y 之间的距离,可以用来获取最大/小值的索引
vector<int> a({0,1,-2,3});
auto b = distance(a.begin(), min_element(a.begin(), a.end()));
cout << a[b] << endl;
return 0;
8.改变vector大小
改变 vector 的大小可以使用 v.resize(n, t)函数,调整 v的大小为 n个元素,任何新添加的元素都初始化为值 t
如果不确定元素的确定个数,那么 vector 就是最好的选择。