map&set

map&set底层都是红黑树

set

没有key, 只存val

默认中序遍历,并且为升序(s.begin()为最小)

容器的线性&非线性

序列式容器:vector/list...    线性的

关键试容器:map,set...     非线性

判断在不在set中

s.count(val)

返回一或零(数量)

s.lower_bound&s.upper_bound

控制区间边界开闭

删除[30,60]区间

注意左闭右开细节,若需要删除的是左闭右闭,那么右边界就要upper

multiset

不提供[]

排序后允许重复

find返回中序遍历时第一个(按排序便利到的第一个)

erase

删除全部指定值

map

底层也是搜索树

不允许key重复

存储pair(key&val)

按照key排序(中序)

operator[]用法

定义

调用insert

新增val为int默认0

insert返回pair<iterator,bool>

iterator指向自身或同key节点

模拟实现operator[]

返回val的引用,保证外界可改变[]返回值

operator[]的妙用

不存在的话会插入的

int i=int()   肯定为0(规定)

int i             随机

pair

给map传pair参方法:

传参用make_pair()

或{ }(多参数时隐式类型转换)

甚至一次多个pair,{{ },{ }...}

(外层inizerlist,内层隐类转换)

pair没有重载流插入与流提取

pair不能直接打印,只能单独取first(key)、second(val)依次打印

(可先解引用再.   或直接—>)(其iterater重载了->)

tips

类型太长(如迭代器),用auto替代

范围for遍历map时,e前要加引用(const auto&e:m)。不然会深拷贝

常用查找方法:

暴力查找

排序+二叉树:快,但插入和删除代价大

搜索树:搜索二叉树-> 平衡树(AVL,红黑)   ->多差平衡树(B树系列)

哈希系列:哈希表

int i=int()   肯定为0(规定)

int i             随机

板书:

map&set

map&set&AVL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值