STL容器——map常用用法笔记

map——常用STL容器,可将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器),用于散列表法。

map使用时要加上:#include<map>;using namespace std。

map的定义:

map<typename1,typename2> mp;  typename1: 键key的类型;typename2: 值value的类型;

如果是字符串到整型的映射,必须使用string不能使用char数组;

使用map将一个set容器映射到一个字符串:map<set<int>, string> mp;

map容器内元素的访问:

1.通过下标访问  2.通过迭代器访问

1.通过下标访问 

2.通过迭代器访问

迭代器的定义:1. map<typename1, typename2>::iterator it;

                          2. auto it;

使用迭代器it同时访问键和值:map使用it->first访问键,使用it->second访问值;

map会以从小到大顺序自动排序,因为map内部是使用红黑树实现的,会在建立映射的过程中自动实现从小到大的排序功能,set也是如此。只需处理映射不按键排序,可使用unordered_map,其内部以散列代替红黑树实现,unordered_map速度比map快得多。

3.使用pair进行访问

使用迭代器访问,访问第一个元素:it -> first

使用pair<string,int> p来访问,访问第一个元素:p.first

一个是箭头,一个是点哈~

map容器添加元素:

1.通过数组下标

m["string"]=19;

2.用insert插入pair元素

mp.insert(pair<string,int>("heihei",5));
//或:
mp.insert(make_pair("heihei",5));

map常用函数: 

(1) find()

     mp.find(key)返回键为key的映射的迭代器

(2) erase()

     1.删除单个元素:mp.erase(it)或mp.erase(key);

     2.删除一个区间内元素:mp.erase(first, last); first: 需删除区间的起始迭代器,last: 需删除区间末尾迭代器的下一个地址。删除区间为: [first, last)。

(3) size()

      返回map中映射的对数

(4) clear()

     清空map中所有元素

     begin()         返回指向map头部的迭代器

     end()           返回指向map末尾的迭代器

     count()         返回指定元素出现的次数

     empty()         如果map为空则返回true

     insert()        插入元素

     key_comp()      返回比较元素key的函数

     lower_bound()   返回键值>=给定元素的第一个位置

     swap()           交换两个map

     upper_bound()    返回键值>给定元素的第一个位置

     value_comp()     返回比较元素value的函数

mp.begin() 为指向mp中第一个元素的迭代器;mp.end()指向mp中最后一个元素下一个地址;

map的遍历:

1.  使用迭代器进行遍历

    // 方式一、迭代器
    cout << "方式一、迭代器" << endl;
    for (auto it = mp.begin(); it != mp.end(); it++) {
        cout << it -> first << " " << it -> second << endl;
    }

2. 

    // 方式二、range for C++ 11版本及以上
    cout << "\n方法二、 range for" << endl;
    for (auto& it : mp) {
        cout << it.first << " " << it.second << endl;
    }

3.

    // 方法三、 C++ 17版本及以上
    cout << "\n方法三" << endl;
    for (auto& [key, val] : mp) {
        cout << key  << " " << val << endl;
    }

map常用用途:

(1)建立字符串和整数的映射

(2)判断大整数或其他类型数据是否存在,将map当bool数组使用

(3)建立字符串与字符串之间的映射

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值