stl的map和set

概念

map和set底层都是红黑树

set是key模型结构,本质就是看一个元素在不在容器中。

map是key/value结构,里面存了一个pair结构,可以通过一个值来查找另外一个值

map和set结构中遍历出来的都是有序并且去重了的,map和set都支持增删查并不支持改,因其底层是红黑树,改数据会使其不再是红黑树的结构了

pair结构

pair结构就是一个键值对

map插入的三种方法

1对象插入

map<string,string> dict;
pair<string,string> kv1("排序","sort");
pair<string,string> kv2("左边","left");
dict.insert(kv1);
dict.insert(kv2);

2匿名对象插入

map<string,string> dict;
dict.insert(pair<string,string>("排序","sort"));
dict.insert(pair<string,string>("左边","left"));

3make_pair插入

map<string,string> dict;
dict.insert(make_pair("排序","sort"));
dict.insert(make_pair("左边","left"));

make_pair是最好用的,因为其可以自动识别类型

set

set默认是排升序,参数传greater可以排降序

插入可以直接用值来作参数

也可以插入一段迭代器区间

插入的返回值也是一个pair结构

map

set没有支持【】操作而map支持了,

标题

它的参数是pair中的first,返回值是pair中的second,并且返回的是引用,可以根据first来修改second

例如:统计水果次数

string arr[]={"苹果","西瓜","香蕉","苹果","西瓜","西瓜","西瓜","苹果"};
map<string,int> countmap;
for(auto str : arr)
{
	countmap[str]++;
}

此外【】自带插入功能,如果是第一次出现“西瓜”这个字符,他会自动插入,如果是第二次甚至多次出现,他会自动计数++

【】的功能:1插入2查找3修改

multimap和multiset

map和set是排序加去重,multimap和multiset是排序,没有去重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值