2.5 map

#include<map>

key/value对

采用红黑树实现,键值不允许重复

用法与set类似


创建map:

map<string, float> m;
m["haha"] = 11.1;
m["hehe"] = 22.2;
for (map<string, float>::iterator it = m.begin(); it != m.end(); ++it)
    cout << (*it).first << " : " << (*it).second << endl;

删除元素:

删除某个迭代器位置上的元素、等于某个键值的元素、一个迭代器区间上的元素

m.erase("haha");

清空map

m.clear();


反向遍历:

for(map<string, float>::reverse_iterator rit = m.rbegin(); rit != m.rend(); ++rit)
    cout << (*rit).first << " : " << (*rit).second << endl;

元素的搜索:

map<string, float> = m.find("hehe"); //按关键字搜索,如果找到,返回迭代器位置;未找到,返回end()。


自定义比较函数与set自定义比较函数相同:

1、是结构体,重载"<";

2、不是结构体,构造一个结构体,重载"()",逻辑代码实现比较

struct desComp
{
    bool operator()(const string &s1, const string &s2)
    {
        if (a != b) return a > b;
        else return a > b;
    }
};

map<string, float, desComp> m;
m["haha"] = 11.1;
m["hehe"] = 22.2;
for (map<string, float, desComp>::it = m.begin(); it != m.end(); ++it)
    cout << (*it).first << " : " << (*it).second << endl;

用map实现数字分离(字符映射为数字)

map<char,int> m;
for (int i = 0; i < 10; ++i)
    m['0'+i]=i;
string s="123456";
int a = m[s[3]];//取出第三位上的数字

以上方法采用map<int, char>结构就可以将数字映射为字符


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值