c++map自动排序特性
c++中的map会自动根据first值排序,这样排好序后输出第一个用begin,输出最后一个用rbegin
first支持int和string类型的排序,其原理应该是ascii(这一点我没有考证,反正也不太重要)
举个栗子
题目描述
每天第一个到机房的人要把门打开,最后一个离开的人要把门关好。现有一堆杂乱的机房签到、签离记录,请根据记录找出当天开门和关门的人。
输入描述:
每天的记录在第一行给出记录的条目数M (M > 0 ),下面是M行,每行的格式为 证件号码 签到时间 签离时间 其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。
输出描述:
对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。 注意:在裁判的标准测试输入中,所有记录保证完整,每个人的签到时间在签离时间之前,且没有多人同时签到或者签离的情况。
示例1
输入
复制
3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40
输出
复制
SC3021234 CS301133
题目来源:https://www.nowcoder.com/practice/a4b37b53a44d454ab0834e1517983215?tpId=40
本来还以为需要暴力分解字符串,后来一想,不用啊,map自动解决了
#include<iostream>
#include<cstdio>
#include<queue>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<map>
#include <sstream>
using namespace std;
map<string,string>open;
map<string,string>close;
int main(){int num;while(cin>>num){open.clear();close.clear();string id,st,et;for(int i=0;i<num;i++){cin>>id>>st>>et;open.insert(pair<string,string>(st,id));close.insert(pair<string,string>(et,id));}cout<<open.begin()->second<<" ";cout<<close.rbegin()->second<<endl;}
}
但是会这一种有点少,万一如果下一次开门的时候需要凑齐两个人呢?
就是说需要输出第一个和第二个
所以有必要学一下map迭代器
map<string,string>::iterator it;for(it=open.begin();it!=open.end();it++){cout<<it->second<<endl;
}for(it=close.begin();it!=close.end();it++){cout<<it->second<<endl;
}
迭代器是以类别区分的,也就是代码中的it可以迭代first和second类型都是string的map
如果要迭代<int,string>的map,就需要重新声明一个迭代器了
c++map自动排序特性相关推荐
- “避开”std::map自动排序
说是 "避开",其实是利用他排序的特性: map<string, string> mymap;mymap.insert(pair<string, string&g ...
- C++屏蔽map自动排序
最近写项目时,发现map自动排序了,以前没注意这个问题,可能ms考虑到map查询效率问题,插入时候就自动按key排序,查找其内部构造,发现其是模板实现方式,咱们可以改一改模板就可以避免自动排序(万不得 ...
- java map 自动排序_java Map排序问题
java 中,Map常见的有HashMap ,TreeMap等等,Map是一个接口,我们不能直接声明一个Map类型的对象,在实际开发 中,比较常用的Map性数据结构是HashMap和TreeMap,它 ...
- java map 自动排序_Java中Map的排序
Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...
- C++ STL容器 map禁止自动排序
背景:key-value形式的数据,已经使用了map存储,后来要求读取时的顺序要和插入的顺序一致 方案一.再定义个数组,按顺序保存key (推荐) 方案二.map更换为unordered_ma ...
- java8新特性:对map集合排序
一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...
- java8新特性:对map集合排序,根据key或者value操作排序(升序、降序)
java8新特性:对map集合排序,根据key或者value操作排序(升序.降序) 直接上代码: package com.drew.test; import java.util.List; impor ...
- Java 自动排序map_跟我学Java编程—应用自动排序的TreeMap
前面介绍了Map接口的实现类LinkedHashMap,LinkedHashMap存储的元素是有序的,可以保持元素的插入顺序,但不能对元素进行自动排序.在一些编程应用场景中,如果在数据的存储过程中,能 ...
- python中用def实现自动排序_漫画排序算法Python实现
冒泡排序 冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时, 交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变. def bubbleSort(list): ran ...
最新文章
- GO是更好的编程语言吗?
- 如何从0写一个服务网关?
- Flutter开发之搭建Flutter开发环境(三)
- 网络安全等保定级_网络安全防护专项检查迫在眉睫, 青莲帮您快速定级备案和评测...
- VTK:图像透明度用法实战
- 关于Windows azure从github上部署项目
- 保护亿万数据安全,Spring有“声明式事务”绝招
- 英魂之刃服务器维护中修改,英魂之刃gg修改教程 | 手游网游页游攻略大全
- Jmeter(十一)测试监听
- CF991C Candies
- Apache反向代理设置
- 142Echarts - 矩形树图(Disk Usage)
- java 统计数字个数_JAVA统计数字个数
- 年终总结:2018依旧没有旅行,我却行走了一光年
- 一切还要从副总裁在朋友圈卖内裤说起
- 我的收藏:第二章:程序员收入渠道
- 新手拍短视频技术总结:真实 随性 用心
- 国产光纤熔接机技术是否成熟?带你评测TFN-S7光纤熔接机性能
- js中settimeout的终止
- androidpn客户端深析
热门文章
- 各类积分对称性详细总结
- web前端--Html4
- kaggle竞赛 - Home Credit Default Risk金牌心得
- python n维向量向任意方向旋转,求旋转矩阵
- push时git报错 error: failed to push some refs to 'git@gitee.com:git_zn/jianli.git' 解决办法...
- 记一次物理服务器磁盘故障修复过程
- alevel计算机教材答案,alevel计算机教材电子版及内容和目录大纲
- android-历史版本
- vb.net 如何文件指定打印机打印文件_大规模使用FDM 3D打印机的三大挑战
- 夜雨数竞笔记-定积分(1)-区间再现公式