STL(二)

set/multiset/map/multimap

-优点:支持跟排序有关的操作

set/multiset
erase();

  1. 输入一个数x,删除所有等于x的结点 O(k+logn), 其中k是x的个数
  2. 输入一个迭代器,删除这个迭代器

-核心操作
lower_bound(x)/upper_bound(x);返回大于等于/大于x的最小的数的迭代器,不存在返回end

map/multimap, 两个东西映射
-用途:map实现平衡树
insert(); //插入的数是一个pair
erase(); //输入的数是pair或迭代器
find();
[] //跟数组用法相同, 但时间复杂度O(logn)

map<string, int> a;
a["xue"]=1;
cout<<a["xue"]<<endl;
lower_bound(x)/upper_bound(x);

unordered_set/unordered_map/unordered_multiset/unordered_multimap //哈希表

-优点:
和前面类似,但增删改查操作时间复杂度O(1)
-缺点:
内部无序,不支持lower_bound(x)/upper_bound(x); 不支持++ --操作

bitset, 压位

-优点:节约8倍空间
-定义

bitset<10000> s; //<个数>

-操作
~, &, |, ^, >>, <<, ==, !=
[]
count(); //返回有多少个1
any(); //判断是否至少有一个1
none(); //判断是否全为0
set(); //把所有位置成1
set(k, v); //把第k位变成1
reset(); //把所有位变成0
flip(); //等价于 ~
flip(k); //把第k位取反


1.10小结

  • 《算法基础课》
    图1

  • 组队练习
    牛客小白月赛31
    D-数据范围,没开long long
    G-计算问题
    H-√
    I - √

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值