map和set

map和set和是关联容器,和vector、list之类的不同,map和set一次存两个值,存的是是一个键值对,对于map存的是<key,value>,对于set存的是<value,value> 。

map

map的构造函数

  • map<type,type> m1;
  • map<type,type> m2(m1.begin(),m1.end());
  • map<type,type> m3(m2);
    map支持迭代器。

map的接口

  • bool empty()const 判断是否为空
  • void clear() 清空map
  • pair<iterator,bool> insert(const value_type& val) 键值对插入
  • iterator insert (iterator position, const value_type& val); 迭代器插入
  • void swap(map&) 交换两个map的值
  • iterator find (const key_type& k); 查找值为key的键值对
  • size_type size() const; 返回大小
  • mapped_type& operator[] (const key_type& k); 方括号是值得注意的,如果key存在,则返回对应的value,如果不存在,会与默认的value构造键值对,然后返回。
    更多详细接口

map 相关介绍

  • 在内部,map是按照键值 key 来排序的
  • 允许下标访问
  • 比较器默认按小于比较

set

set的构造函数

  • set< type > s1;
  • set< type > s2(array,array+lenth);
  • set< type > s3(s2);
  • set< type > s4(s3.begin(),s3.end());
    支持迭代器

set的接口

  • bool empty()const 检测set是否为空
  • size_type size()const 返回set中有效元素的个数
  • pair<iterator,bool> insert (const value_type& val); 插入元素
  • void erase (iterator position); 删除position位置上的元素
  • size_type erase (const value_type& val); 删除值为 val的元素,返回删除的个数
  • viod clear(); 清空set
  • iterator find (const value_type& val) const; 查找val的元素,返回位置。
    更多详细接口

set的相关介绍

  • set 中的元素不可以重复(可以用set去重)
  • set中元素不能修改(要修改一个元素,先删除他,在插入你修改后的值)
  • set 中的元素默认按小于来比较
  • 使用迭代器遍历,可以得到有序的序列

multimap和map的区别在于,multimap中的key可以重复
multiset和set的区别在于,multiset中的key可以重复

map和set的模拟实现

传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值