常用STL库

1.动态数组vector

1.头文件

#include< vector>

2.构造方式

vector< int> vec  //名为vec的int类型的动态数组,int可替换为其他元素类型

3.功能

(1)插入元素
vec. push_back(1)  //插入内容为1

长度为n,内容全是1的动态数组:

vector< int>vec;

vec.push_back(1);
(2)获取长度并访问元素
vec .size()   //获取长度

vec[i]   //访问第i个元素
(3)修改元素
vec[i]=1  //给vec第i个元素赋值为1
(4)删除元素
vec .pop_back()  //删除最后一个元素
(5)清空

清空内容但不清空内存:

vector<int>().clear()  //int可换为其他类型

清空内存:

vector<int>().swap(vec)  //int可换为其他类型,vec为数组名称

方法总结

方法功能
push_back在末尾加入一个元素
pop_back在末尾弹出一个元素
size获取长度
clear清空

4.二维数组

(1)构建动态数组:

vector<vector< int> >vec2

!空格不能丢!

(2)构建n行m个的动态数组:

vector<vector<int> >vec2(n,vector<int>(m,0))  //老样子,int可换,vec2是名称

(3)插入元素:

push_back

(4)访问元素:

名称[i]

(同上了)

2.集合set

1.引用库:

#include<set>

2.构建集合:

set<int> s  //int可换,s是名称

3.功能:

(1)插入元素:
s.insert("1")  //向s内插入1
(2)删除元素:
s.erase("1”)
(3)判断元素是否存在:
s.count("1")
(4)迭代器:
set<int>::iterator s  

空格依然不能丢

s.begin() 为起始元素的迭代器

s.end() 为尾后迭代器

注:set自动从小到大遍历

(5)清空:

s.clear()  //同时清空内容和内存

set与结构体结合:

3.映射map

1.引用库:

#include<map>

2.构造map:

map<类型1,类型2> 名称; 如:

map<string,int> m;

3.功能

(1)插入映射:

头文件:

#include<utility>

插入内容:

pair<string,int>p;

make_pair(v1,1)

注:如果之前插入的key已经存在了,则新插入的value无效

(2)访问映射

获取value:

m["1"]

注:若没有对key做过映射,则自动生成映射,value为默认值(int型为0,string为空字符串)

不用insert插入pair的方法:

m["v2"]=2

迭代器:

注:map按关键字从小到大遍历

清空:

clear()

map常用函数总结:

函数功能
insert插入一对映射
count判断关键字是否存在
size获取映射对个数
clear清空

二维map

map套用set

构造:

map<int,set<string> > s

空格不能少!!!

map套用map

构造:

map<int,map<string,int> > s

4.队列queue

1.引用库

#include<queue>

2声明

queue<int> q;

3.用法

q.front(); //获取队首

q.back(); //获取队尾

q.push(x); //插入元素,x表示要插入的值,什么都行(但是类型必须和定义的相同)

q.pop(); //将队头弹出,无返回值

q.size(); //返回队列里有多少个元素

q.empty(); //如果队列为空,返回true,否则返回false( 等同于q.size()==0 )

q.swap(q2); //交换q和q2里面的值(q2需要和q是一个类型)

5.大顶堆和小顶堆

大顶堆:

priority_queue <int,vector<int>,greater<int> > q;

小顶堆:

priority_queue<int,vector<int>,less<int> >q;

用法同队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值