vector

参考https://blog.csdn.net/qq_50285142/article/details/122303529

初始化

vector<int> a; //定义了一个名为a的一维数组,数组存储int类型数据
vector<double> b;//定义了一个名为b的一维数组,数组存储double类型数据
vector<node> c;//定义了一个名为c的一维数组,数组存储结构体类型数据,node是结构体类型


vector<int> v(n);//定义一个长度为n的数组,初始值默认为0,下标范围[0, n - 1]

vector<int> v(n, 1);//v[0]到v[n-1]所有的元素初始值均为1 //注意:指定数组长度之后(指定长度后的数组就相当于正常的数组了)

vector<int> a{1, 2, 3, 4, 5};//数组a中有五个元素,数组长度就为5

vector<int> a(n + 1, 0); vector<int> b(a);//两个数组中的类型必须相同,a和b都是长度为n+1,初始值都为0的数组

 

vector<int> v[5];//定义可变长二维数组 //注意:行不可变(只有5行), 而列可变,可以在指定行添加元素 //第一维固定长度为5,第二维长度可以改变

vector<int> v[5]可以这样理解:长度为5的v数组,数组中存储的是vector<int> 数据类型,而该类型就是数组形式,故v为二维数组。其中每个数组元素均为空,因为没有指定长度,所以第二维可变长。可以进行下述操作:

v[1].push_back(2);
v[2].push_back(3);

//初始化二维均可变长数组 vector<vector<int>> v;//定义一个行和列均可变的二维数组

方法函数

 

c指定为数组名称,含义中会注明算法复杂度。

代码 含义
c.front() 返回第一个数据O ( 1 ) 
c.back() 返回数组中的最后一个数据 O ( 1 ) 
c.pop_back() 删除最后一个数据O ( 1 ) 
c.push_back(element) 在尾部加一个数据O ( 1 ) 
c.size() 返回实际数据个数(unsigned类型)O ( 1 ) 
c.clear() 清除元素个数O ( N ) ,N为元素个数
c.resize(n, v) 改变数组大小为n,n个空间数值赋为v,如果没有默认赋值为0
c.insert(it, x) 向任意迭代器it插入一个元素x ,O ( N ) 
例:c.insert(c.begin()+2,-1) 将-1插入c[2]的位置
c.erase(first,last) 删除[first,last)的所有元素,O ( N ) 
c.begin() 返回首元素的迭代器(通俗来说就是地址)O ( 1 ) 
c.end() 返回最后一个元素后一个位置的迭代器(地址)O ( 1 )
c.empty() 判断是否为空,为空返回真,反之返回假 O ( 1 ) 
注意: end()返回的是最后一个元素的后一个位置的地址,不是最后一个元素的地址,所有STL容器均是如此
使用sort排序要: sort(c.begin(), c.end());

对所有元素进行排序,如果要对指定区间进行排序,可以对sort()里面的参数进行加减改动。

vector<int> a(n + 1);
sort(a.begin() + 1, a.end()); // 对[1, n]区间进行从小到大排序
c.insert(upper_bound(c.begin(),c.end(),x),x);//二分插入保证单调性


posted @   yhish  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示