Map

本文详细介绍了C++标准模板库中的map容器,包括其基本概念、构造函数、元素添加、查找、删除、遍历等操作,以及自定义比较函数、基本操作函数等内容。同时提供了实例代码,帮助读者更好地理解和应用map容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    map映照容器的元素数据是由一个键值和一个映射数据组成的,她是关联容器,键值与映射数据之间是一对一的关系。map本身是有顺序的,默认她按键值由小到大进行排列。map映射容器的数据机构是采用红黑树来实现的,插入元素的键值不能重复。使用map容器需要头文件包含语句“#include <map>。

 

1. map的构造函数;

   map<key, value> myMap;

   map<key, value> myMap(myMap2); // 获取myMap2的副本

   map<key, value> myMap(begin, end); // begin和end是迭代器

   例如:

   map<string, int> myMap1;

   map<string, int> myMap2(myMap1);

   map<string, int> myMap3(myMap1.begin(), myMap1.end());

           注:由于map<string, in>类型书写较长,我们可以这样定义, typedef map<string, int> MY_MAP;

 

2. map添加元素:

  map<string, int> myMap;  
   1. myMap.insert(pair<string, int>("My map 1", 1));
   2. myMap.insert(map<string, int>::value_type("My map 2", 2));
   3. myMap[My map 3] = 3;

   检查插入元素是否成功:

   pair<map<string, int>::iterator, bool> ret = myMap.insert(pair<string, int>("("My map 1", 1));如

   果插入成功bool值返回true,否则返回false。

3. map中元素的查找:

   使用find()方法来搜索某个键值,如果搜索到了,则返回该键值所在的迭代位置,否则返回end()迭代位置。

   代码示例:

   map<string, int>::iter = myMap.find("My map 1");

   if(iter != myMap.end())

   {

      cout<<"find the key!"<<endl;

   }
4. map中元素的删除:
   erase()函数可以删除某个迭代器位置上的元素、等于某个键值的元素。

   代码示例:

   myMap.erase("My map 1");

5. map的遍历:

   map<string, int>::iterator iter; 

   for(iter = myMap.begin(); iter != myMap.end(); iter++)

   { 

     ........

   }
6. map自定义比较函数:

   1)元素不是结构体

   map<int, char, myComp> myMap;

   struct myComp

   {

      bool operator()(const int &a, const int &b)

      {

         if(a!=b) return a>b;

         else return a>b;

      }

   }

   2)元素是结构体

   把比较函数写在结构体中。

   map<Info, int> myMap;

   struct Info

   {

      float value;

      bool operator<(const Info &a) const

      {

         return a.value < value;

      }

   }
 

7. map的基本操作函数:
      C++ Maps是一种关联式容器,包含“关键字/值”对
      begin()           返回指向map头部的迭代器
      clear()          删除所有元素
      count()           返回指定元素出现的次数
      empty()          如果map为空则返回true
      end()             返回指向map末尾的迭代器
      equal_range()      返回特殊条目的迭代器对
      erase()          删除一个元素
      find()           查找一个元素
      get_allocator()    返回map的配置器
      insert()         插入元素
      key_comp()        返回比较元素key的函数
      lower_bound()     返回键值>=给定元素的第一个位置
      max_size()        返回可以容纳的最大元素个数
      rbegin()          返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器
      size()           返回map中元素的个数
      swap()           交换两个map
      upper_bound()     返回键值>给定元素的第一个位置
      value_comp()      返回比较元素value的函数

基于STM32的循迹避障小车资料源码(高分项目),个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(高分项目)基于STM32的循迹避障小车资料源码(
内容概要:本文详细介绍了SSM框架(Spring、SpringMVC、MyBatis)的相关知识,涵盖Maven项目管理工具、前端开发技术、HTTP协议及Tomcat服务器等内容。文章首先讲解了SSM框架的组成,包括Spring的IOC、DI、AOP等功能,SpringMVC的请求处理流程以及MyBatis的数据操作。接着介绍了Maven作为项目管理工具的作用,如依赖管理和项目构建,并详细描述了Maven的配置文件pom.xml的使用方法。此外,还探讨了HTTP协议的特点、请求响应格式,以及Web服务器Tomcat的基本概念和工作原理。最后,文章对前端开发技术进行了概述,包括HTML、CSS、JavaScript等基础知识,并简要介绍了Ajax技术。 适合人群:具备一定编程基础,特别是Java开发经验的研发人员,尤其是那些正在学习或使用SSM框架进行Web开发的工程师。 使用场景及目标:①理解SSM框架的工作原理及其各组成部分的功能;②掌握Maven的使用,包括项目创建、依赖管理、生命周期等;③熟悉HTTP协议的请求响应机制,能够处理常见的HTTP请求和响应;④掌握前端开发技术,如HTML、CSS、JavaScript等,能够进行简单的前端页面开发;⑤了解Tomcat服务器的工作原理及其配置方法。 阅读建议:本文内容丰富,涵盖了从后端到前端的多个方面,建议读者在学习过程中结合实际项目进行实践,尤其是在Maven项目管理和SSM框架的具体应用上,多动手操作,加深理解。同时,对于HTTP协议和前端开发技术,可以通过实际的网络请求和页面开发来巩固所学知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值