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

相关文章

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

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

Collection List Set Map的区别和联系

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

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

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

C++ STL 适配器

系列文章目录 模板特例化,偏特化,左右值引用 https://blog.csdn.net/surfaceyan/article/details/126794013 C++ STL 关联容器 https://blog.csdn.net/surfaceyan/article/details/127414434 C++ STL 序列式容器(二) https://blog.csdn.net/surfac

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib

Map

Map 是 Java 中用于存储键值对的集合接口。以下是对 Map 的详细介绍: 特点 键值对存储:每个元素包含一个键和一个值。 键唯一:键不能重复,但值可以重复。 无序/有序:根据具体实现,键值对的顺序可能无序(如 HashMap)或有序(如 TreeMap、LinkedHashMap)。 主要实现类 HashMap 基于哈希表,无序存储。 允许一个 null 键和多个 null 值。

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

我们依旧在追梦的路上-山东省第六届ACM比赛总结

这场比赛从结果而言达到了预期(金牌),从过程而言和我的预期相差甚远(打的太乱,个人发挥很差),还好关键时刻队友抗住压力,负责后果真的不堪设想。 热身赛 热身赛纯粹测机器的,先把A,B,C草草水过(A题小写x打成大写的也是醉了),我和老高开始各种测机器,long long不出所料是lld的,试了一下除0和数组越界的re问题,发现没有re,只有wa(甚至数组越界还AC了),至于栈深的话也没过多追

STL set整理

#include<set>#include<cstdio>#include<iterator>#include<iostream>#include<algorithm>using namespace std;//set 集合的操作//multisetset<int>Set1;set<int>Set2;set<int>Set3;/*begin() 返回指向第一个元素的迭代器