首页 > 编程语言 >C++ STL 容器之map

C++ STL 容器之map

时间:2023-09-20 16:44:44浏览次数:43  
标签:map 迭代 insert STL C++ 插入 mp value

一、map简介

  1. 可以将任何基本类型映射到任何基本类型。如int array[100]事实上就是定义了一个int型到int型的映射。
  2. map提供一对一的数据处理,key-value键值对,其类型可以自己定义,第一个称为关键字,第二个为关键字的值
  3. map内部是自动排序的

二、用法

1.map定义:

 map<type1 name, type2 name> mp; //第一个是键的类型,第二个是值的类型

2.map容器内元素访问

通过下标进行访问

mp['a'] = 5;

通过迭代器进行访问

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     map<char, int>mp;
 7     mp['a'] = 65;
 8     mp['b'] = 66;
 9     mp['c'] = 67;
10     mp['d'] = 68;
11     map<char, int>::iterator it;
12     for(it = mp.begin(); it!=mp.end(); it++){
13         cout<<it->first<<" "<<it->second<<endl; // it->first访问键,it->second访问值
14     }
15     return 0;    
16 } 

3. insert插入

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     map<string, int>mp; // 定义一个map对象
 7     mp.insert(pair<string, int>("www", 1)); // 用insert插入pair 
 8     mp.insert(map<string, int>::value_type("aaa", 2)) ; // 用insert函数插入value_type数据
 9     mp["bbb"] = 3; // 用数组方式插入 
10      
11     map<string, int>::iterator it; // mp迭代器 
12     // mp.begin()返回指向mp头部的迭代器, mp.end()返回指向mp尾部的迭代器 
13     for(it=mp.begin(); it!=mp.end(); it++){ 
14         cout<<it->first<<" "<<it->second<<endl;
15     }
16     map<string, int>::reverse_iterator it2;
17     // 反向迭代 
18     // mp.rbegin()返回指向mp尾部的逆向迭代器,mp.rend()返回指向mp头部的逆向迭代器
19     for(it2=mp.rbegin(); it2!=mp.rend(); it2++){
20         cout<<it2->first<<" "<<it2->second<<endl; 
21     } 
22     return 0;    
23  } 

 

4.find查找

1     map<string, int>mp; // 定义一个map对象
2     mp.insert(pair<string, int>("www", 1)); // 用insert插入pair 
3     mp.insert(map<string, int>::value_type("aaa", 2)) ; // 用insert函数插入value_type数据
4     mp["bbb"] = 3; // 用数组方式插入 
5     
6     map<string,int>::iterator it;
7     it = mp.find("aaa"); // find(key):返回的是key的映射的迭代器 
8     cout<<it->first<<" "<<it->second<<endl;

5. clear清空,size映射个数

 1     map<string, int>mp; // 定义一个map对象
 2     mp.insert(pair<string, int>("www", 1)); // 用insert插入pair 
 3     mp.insert(map<string, int>::value_type("aaa", 2)) ; // 用insert函数插入value_type数据
 4     mp["bbb"] = 3; // 用数组方式插入 
 5     
 6     int len = mp.size(); // 获取mp中的映射个数
 7     cout<<len<<endl; 
 8     mp.clear(); // map清空 
 9     len = mp.size();
10     cout<<len<<endl; 

6.erase删除一个元素

1     map<string, int>iterator it;
2     it = mp.find("www");
3     mp.erase(it); // 迭代器删除
4     int k = mp.erase("aaa"); // 关键字删除,如果删除了返回1, 否则返回0,
5     mp.erase(mp.begin(), mp.end()); // 用迭代器范围删除,这里等同于mp.clear  

7. map.empty()判断其是否为空

 

标签:map,迭代,insert,STL,C++,插入,mp,value
From: https://www.cnblogs.com/wsy107316/p/17717723.html

相关文章

  • 关于CMap的小知识
    最近在mfc中用到字典,自己不会在网上查了资料。简单总结一下:一,CMap是什么?     映射(Map),又称为字典(Dictionary),是由关键字(Key)及其对应的元素值(Value)所组成的元素单元(Element)的表单式集合。CMap是一个mfc的模板类,可以建立一个从任意类型的变量到另外一个任意类型的变量的映射(m......
  • c++中生成随机数
    #include<iostream>#include<string>#include<algorithm>#include<ctime>usingnamespacestd;constintINF=1e9;intmain(){//设置种子srand((unsigned)time(NULL));//可随机生成0-10以内的数 intt=rand()%10; cout<<......
  • 【结对编程互评-C++】中小学数学卷子自动生成程序
    【结对编程互评-C++】中小学数学卷子自动生成程序项目名称:中小学数学卷子自动生成程序编程语言:C++代码作者:李义评价人:张恒硕目录[1.项目要求][1.1目标用户][1.2实现功能][2.代码分析][3.功能测试][3.1登录功能测试][3.2出题功能测试][4.优缺点分析与总结]......
  • hadoop中mapred.tasktracker.map.tasks.maximum的设置
    目前,我们邮件的一部分log已经迁移到Hadoop集群上并由Hive来执行相关的查询hadoop中默认的mapred.tasktracker.map.tasks.maximum设置是2也即:每一个tasktracker同时运行的map任务数为2照此默认设置,查询80天某用户的操作日志,耗时5mins,45sec经过测试,发现将mapred.tasktracker.map.ta......
  • 实现mapreduce多文件自定义输出
     普通maprduce中通常是有map和reduce两个阶段,在不做设置的情况下,计算结果会以part-000*输出成多个文件,并且输出的文件数量和reduce数量一样,文件内容格式也不能随心所欲。这样不利于后续结果处理。如果只是想做到输出结果的文件名可控,实现自己的LogNameMultipleTextOutputFormat类,......
  • C++学习
    C++简单或复杂又如何,万般皆由人--风尘尘风一、C++简述1.1C++概念C++是一种由BjarneStroustrup于1979年在新泽西州贝尔实验室开始设计开发的高级语言C++扩充和完善了C语言,是面向对象的程序设计语言,C++可运行于多种平台上(Win、Mac、unix)1.2C++特点C++......
  • C++中的类指针
    Studenta;s.setName("A");//Studeng*b=newStudent();Student*b; //声名指针b=newStudent(); //动态分配内存b->setName("B"); //访问成员函数分析定义类对象基本格式是:Studenta;在定义时就已经为a对象分配好了内存空间,且为内存栈;定义类指针......
  • 【gdb】让GDB支持STL的标准库的方法
     本文源自http://sourceware.org/gdb/wiki/STLSupport正常情况下,gdb没法直观的打印出stl标准库中的容器之类的,调试起来非常困难了。如vector,queue,deque,list等。如vector<int>a(gdb)pa$1={<std::_Vector_base<int,std::allocator<int>>>={  _M_impl={<s......
  • C++文件的读写
    文件读写函数库对于文件对象的操作,主要使用库:#include<fstream>类可以定义三种类对象:ifstream定义的对象只能读文件ofstream定义的对象只能写文件iofstream定义对象既能读文件,也能写文件类定义的对象中open()方法的第二个参数文件模式(filemode)有多种属性:in:......
  • java将map的key转为大写
    普通的stream流,toMap方法会调用merge方法,该方法如果value传值为null的时候,会报空指针异常,因此直接使用collect()方法进行规约操作publicstaticvoidmain(String[]args){Map<String,String>testMap=newHashMap<>();testMap.put("apple",null);testMap.put("......