向量vector

发布时间 2023-10-15 11:12:08作者: 一只傲娇璇

向量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 的元素,返回新添加的第一个元素的迭代器。

img

4.删除操作

v.erase(p) 删除迭代器p所指的元素,返回指向被删除元素之后元素的迭代器。

v.erase(b, e) 删除迭代器 b, e 之间的元素,返回指向最后一个被删除元素之后元素的迭代器。

img

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 就是最好的选择。