C++ STL总结

刷leetcode用到的STL总结:
1. map<k, v> m
由许多键值对组成(可以理解为pair< k, v>),map中k不能重复.map中键值对的先后顺序按k值排序,即若用迭代器从map.begin()开始遍历到end(),就是按k值升序遍历的.

插入的方法有:

m.insert(make_pair(k, v)); //调用insert方法
m[k] = v; //调用[]运算符,map的特色之一

访问的方法一般只能通过键值key访问:

m[k] // 作为右值

2.set<type> s由关键字组成,type表示某一特定类型,且值不能重复.(可以理解为v=k的map)
特别的,若type 是 pair容器,则该set可以看做map

插入:

type e;
s.insert(e);  //e为type类型

3.multimap <k, v> mm 与map相同之处在于也是按k值排序的.与map的重要区别是k值可以重复, k值相同的pair在multimap中的顺序由插入方式决定.
此外插入和访问的方式都与map不同,都是以pair为单位进行.

插入:

mm.insert(make_pair(k, v)); //不能再用[]运算符

访问:

k key; //key为k类型
auto p = mm.equal_range(key); //在mm中找k值为key的键值对(可能有多个)
//用迭代器遍历所有key相同的键值对
for (auto it = p.first; it != p.second; it++) {
    v val = it->second; //访问v,将其赋给val
}

4.multiset<type> ms与set相同之处在于也是按type值排序的, 与set的重要区别是type值可以重复,若type值相同,则不分先后.
特别的,当type为pair类型是,该multiset可以看做multimap.
然而,还是有细微差别:multiset<pair<k,v>中,若k值相同,则还会按v值排序,而multimap只排k值.

插入:

mm.insert(type);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值