STL库总结

这个东西还蛮重要的。。。就是在考场上正解想不出来,打暴力需要用一些工具这时又发现忘了怎么用了,这就很尴尬了。。。

1.set

实用性很高,所以放最前面啦~

set 内部通常采用红黑树实现。平衡二叉树的特性使得 set 非常适合处理需要同时兼顾查找、插入与删除的情况。 ——摘自OI wiki

set 中的元素默认从小到大自动排序,但比起堆来支持的操作更多。 其中 multiset 支持插入重复数字,而 set 不能,除此以外操作基本相同。

指针

定义是这样式儿的:

set<int>::iterator it1;
multiset<int>::iterator it2;
set<pair<int,int> >::iterator it3;

支持 * 解除引用(就是将指针变为指针指向的东西)

it=s.lower_bound(val);
int x=*it;

set 的迭代器为双向访问迭代器 ,指针仅可以左移或右移(也就是 ++ 或 --),会移到从小到大排序该数的上/下一个,时间复杂度 。

it=--s.lower_bound(val);

函数

begin()/end()

begin() 返回首元素的迭代器,也就是指向首元素的指针,s.begin() 就是集合中最小的一个。

但由于 set 是左闭右开的,end() 返回的便是尾元素再向后一位的位置,或者说集合中最大元素的下一个位置的迭代器(引自算阶),也就是说是没有元素的,使用要注意。

rbegin() 与 rend() 是指向逆向数组的迭代器,通俗讲 rbegin()  end()rend()  begin()然并卵

函数名前加 c 为只读迭代器,通常情况下是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值