ACM STL之map

2024-09-04 23:38
文章标签 map stl acm

本文主要是介绍ACM STL之map,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

map是一个容器,里面存储的是 pair 由key和value组成 key称为关键字(对应first)value称为键值(对应second) key值不能重复map中的元素按key升序排列(省了sort)。
头文件 #include
定义 map<int,int>a;
迭代器 map<string,int>::iterator it;
用迭代器调key 和value的用法 it->first it->second.类似用指针调结构体的成员。
输入方法
运用value_type
m.insert(map<string, int>:: value_type (“asdh”, 22));
运用pair<>
m.insert(pair<string, int>(“asdh”, 22));
运用make_pair()
m.insert(make_pair(“asdh”, 22));
运用数组
a[关键字]=键值;

  begin()          返回指向map头部的迭代器clear()         删除所有元素count()          返回指定元素出现的次数empty()          如果map为空则返回trueend()            返回指向map末尾的迭代器erase()          删除一个元素find()           查找一个元素insert()         插入元素lower_bound()    返回键值>=给定元素的第一个位置upper_bound()     返回键值>给定元素的第一个位置max_size()       返回可以容纳的最大元素个数size()           返回map中元素的个数swap()            交换两个map

erase删除
a.erase(elem) 移除键值为elem的所有元素,返回个数,对 于map来说非0即1。
a.erase(pos) 移除迭代器pos所指位置上的元素。 注意:c++11中erase再删除了当前迭代器的元素会返回下一个元素的迭代器 所以当单个操作时就不用考虑迭代器,但是当在循环中使用删除函数的时候要使用pos=a.erase(pos);所以循环的结构也有所变化
a.erase(posb,pose)删除两迭代器之间的元素

for(it=a.begin();it!=a.end();){if(条件)it=a.erase(it);    //删除元素,返回值指向已删除元素的下一个位置    else++it;   //指向下一个位置}

find count
count 返回的是被找元素的个数map中不存在相同的键值所以返回值为0/1
find 返回的是被查找元素的位置 没有则返回end。用迭代器接收
end
返回的是map最后一个元素的下一个位置。

以上便是个人所知如有错误还请斧正。

这篇关于ACM STL之map的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137361

相关文章

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

JavaScript中的Map用法完全指南

《JavaScript中的Map用法完全指南》:本文主要介绍JavaScript中Map用法的相关资料,通过实例讲解了Map的创建、常用方法和迭代方式,还探讨了Map与对象的区别,并通过一个例子展... 目录引言1. 创建 Map2. Map 和对象的对比3. Map 的常用方法3.1 set(key, v

Golang中map缩容的实现

《Golang中map缩容的实现》本文主要介绍了Go语言中map的扩缩容机制,包括grow和hashGrow方法的处理,具有一定的参考价值,感兴趣的可以了解一下... 目录基本分析带来的隐患为什么不支持缩容基本分析在 Go 底层源码 src/runtime/map.go 中,扩缩容的处理方法是 grow

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验