2023-12-11 16:21:17来源:互联网
摘要:c中vector的用法的用法你知道吗?下面小编就跟你们详细介绍下c中vector的用法的用法,希望对你们有用。c中vector的用法的用法如下:1基本操作(
(资料图)
c中vector的用法的用法你知道吗?下面小编就跟你们详细介绍下c中vector的用法的用法,希望对你们有用。
c中vector的用法的用法如下:
1 基本操作
(1)头文件#include<vector>.
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(8)向量大小:vec.size();
(9)清空:vec.clear();
2
vector的元素不仅仅可以使int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。下面是一段简短的程序代码:
复制代码
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
typedef struct rect
{
int id;
int length;
int width;
//对于向量元素是结构体的,可在结构体内部定义比较函数,下面按照id,length,width升序排序。
bool operator< (const rect &a) const
{
if(id!=a.id)
return id<a.id;
else
{
if(length!=a.length)
return length<a.length;
else
return width<a.width;
}
}
}Rect;
int main()
{
vector<Rect> vec;
Rect rect;
rect.id=1;
rect.length=2;
rect.width=3;
vec.push_back(rect);
vector<Rect>::iterator it=vec.begin();
cout<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl;
return 0;
}
复制代码
3 算法
(1) 使用reverse将元素翻转:需要头文件#include<algorithm>
reverse(vec.begin(),vec.end());将元素翻转(在vector中,如果一个函数中需要两个迭代器,
一般后一个都不包含.)
(2)使用sort排序:需要头文件#include<algorithm>,
sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:
bool Comp(const int &a,const int &b)
{
return a>b;
}
调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。
一级建造师 二级建造师 消防工程师 消防设施操作员 BIM 造价工程师 环评师 监理工程师 咨询工程师 安全工程师 建筑九大员 公路水运检测 通信工程 智慧消防工程师 装配工程师 一级注册建筑师 二级注册建筑师 注册电气工程师 智慧建造工程师 房地产估价师 应急救援员 EPC工程总承包 PLC智能制造 碳排放管理师 雅思 托福 GRE 托业 SAT GMAT A-Level ACT AP课程 OSSD 多邻国英语 考研英语 英语四六级 商务英语 青少儿英语 IB英语 剑桥英语 职场英语 提升英语 AEAS 英语口语 出国英语 初高中英语 学生英语 成人英语 公共英语 词库 经济师 初级会计师 中级会计师 注册会计师 基金从业 证券从业 薪税师 银行从业 CMA ACCA 会计实训 税务师 CFA 企业合规师 审计师 FRM 高级会计师 会计就业 期货从业 CQF 真账实操技能 葡萄牙语 日语 德语 法语 韩语 西班牙 意大利 高考小语种 粤语 泰语 俄语 阿拉伯语 电商视觉设计 影视后期 剪辑包装 游戏设计 游戏程序 UI设计 室内设计 UXD全链路 平面设计 CAD设计制图 商业空间设计