当前位置 博文首页 > 小李的博客:C++ STL Map常用方法详解

    小李的博客:C++ STL Map常用方法详解

    作者:[db:作者] 时间:2021-09-17 15:15

    6.4 map的常用用法详解

    ? map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)

    1. map的定义

    ? map<typename1, typename2> mp;

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

    2. map容器内元素的访问

    (1). 通过下标访问

    ? 和访问普通的数组是一样的

    #include <bits/stdc++.h>
    #include <map>
    using namespace std;
    int main(){
    	map<char, int> mp;
    	mp['c'] = 20;
    	mp['c'] = 30;
    	cout<<mp['c']<<endl; 
    	return 0;
    }
    输出结果:
    	30
    

    (2). 通过迭代器访问

    ? map<typename1, typename2>::iterator it;

    ? map可以使用it->first来访问键,使用it->second来访问值

    #include <bits/stdc++.h>
    #include <map>
    using namespace std;
    int main(){
    	map<char, int> mp;
    	mp['a'] = 20;
    	mp['b'] = 30;
    	mp['c'] = 40;
    	for(map<char, int>::iterator it = mp.begin(); it != mp.end(); it++){
    		cout<<it->first<<' '<<it->second<<endl;
    	} 
    	return 0;
    }
    输出结果:
        a 20
        b 30
        c 40
    

    ? map会以键从小到大的顺序自动排序

    3. map常用函数实例解析

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

    (2). mp.,erase(it) it为需要删除的元素的迭代器

    mp.erase(key) key为欲删除的映射的键

    mp.erase(firat, last) first为需要删除的区间的起始迭代器,last为需要删除的区间的末尾迭代器的下一个地址,即为 区间[first, lasts)

    (3). size() 用来获得map中映射的对数

    (4). clear() 用来清空map中的所有元素

    4. map的常见用途

    (1). 需要建立字符与整数之间映射的题目

    (2). 判断大整数或者其他类型数据是否存在的题目

    (3). 字符串和字s符串的映射也有可能会遇到

    实践

    // 6、Map
    #include <bits/stdc++.h>
    #include <map>
    using namespace std;
    int main(){
    	map<string, int> mm;		//定义一个键为String类型,值为Int类型的map 
    	mm["bb"] = 2;
    	mm["aa"] = 1;
    	mm["cc"] = 3;				//map插入值 
    	//遍历map
    	cout<<"map中元素的个数为: "<<mm.size()<<endl;
    	cout<<"遍历整个map"<<endl; 
    	for(map<string, int>::iterator it = mm.begin(); it != mm.end(); it++){
    		cout<<it->first<<':'<<it->second<<endl;
    	} 
    	cout<<"观察插入map元素可知,map会以键从小到大的顺序自动排序"<<endl;
    	if(mm.find("aa") != mm.end()){
    		cout<<"map中包含aa这个键"<<endl; 
    	} else{
    		cout<<"map中不包含aa这个键"<<endl; 
    	}
    	mm.erase("aa");		//删除aa这个键
    	if(mm.find("aa") != mm.end()){
    		cout<<"map中包含aa这个键"<<endl; 
    	} else{
    		cout<<"map中不包含aa这个键"<<endl; 
    	}
    	cout<<"map中元素的个数为: "<<mm.size()<<endl;	
    	return 0;
    } 
    

    map中元素的个数为: 3
    遍历整个map
    aa:1
    bb:2
    cc:3
    观察插入map元素可知,map会以键从小到大的顺序自动排序
    map中包含aa这个键
    map中不包含aa这个键
    map中元素的个数为: 2

    cs