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自动排序特性相关推荐

  1. “避开”std::map自动排序

    说是 "避开",其实是利用他排序的特性: map<string, string> mymap;mymap.insert(pair<string, string&g ...

  2. C++屏蔽map自动排序

    最近写项目时,发现map自动排序了,以前没注意这个问题,可能ms考虑到map查询效率问题,插入时候就自动按key排序,查找其内部构造,发现其是模板实现方式,咱们可以改一改模板就可以避免自动排序(万不得 ...

  3. java map 自动排序_java Map排序问题

    java 中,Map常见的有HashMap ,TreeMap等等,Map是一个接口,我们不能直接声明一个Map类型的对象,在实际开发 中,比较常用的Map性数据结构是HashMap和TreeMap,它 ...

  4. java map 自动排序_Java中Map的排序

    Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...

  5. C++ STL容器 map禁止自动排序

    背景:key-value形式的数据,已经使用了map存储,后来要求读取时的顺序要和插入的顺序一致   方案一.再定义个数组,按顺序保存key (推荐)   方案二.map更换为unordered_ma ...

  6. java8新特性:对map集合排序

    一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...

  7. java8新特性:对map集合排序,根据key或者value操作排序(升序、降序)

    java8新特性:对map集合排序,根据key或者value操作排序(升序.降序) 直接上代码: package com.drew.test; import java.util.List; impor ...

  8. Java 自动排序map_跟我学Java编程—应用自动排序的TreeMap

    前面介绍了Map接口的实现类LinkedHashMap,LinkedHashMap存储的元素是有序的,可以保持元素的插入顺序,但不能对元素进行自动排序.在一些编程应用场景中,如果在数据的存储过程中,能 ...

  9. python中用def实现自动排序_漫画排序算法Python实现

    冒泡排序 冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时, 交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变. def bubbleSort(list): ran ...

最新文章

  1. GO是更好的编程语言吗?
  2. 如何从0写一个服务网关?
  3. Flutter开发之搭建Flutter开发环境(三)
  4. 网络安全等保定级_网络安全防护专项检查迫在眉睫, 青莲帮您快速定级备案和评测...
  5. VTK:图像透明度用法实战
  6. 关于Windows azure从github上部署项目
  7. 保护亿万数据安全,Spring有“声明式事务”绝招
  8. 英魂之刃服务器维护中修改,英魂之刃gg修改教程 | 手游网游页游攻略大全
  9. Jmeter(十一)测试监听
  10. CF991C Candies
  11. Apache反向代理设置
  12. 142Echarts - 矩形树图(Disk Usage)
  13. java 统计数字个数_JAVA统计数字个数
  14. 年终总结:2018依旧没有旅行,我却行走了一光年
  15. 一切还要从副总裁在朋友圈卖内裤说起
  16. 我的收藏:第二章:程序员收入渠道
  17. 新手拍短视频技术总结:真实 随性 用心
  18. 国产光纤熔接机技术是否成熟?带你评测TFN-S7光纤熔接机性能
  19. js中settimeout的终止
  20. androidpn客户端深析

热门文章

  1. 各类积分对称性详细总结
  2. web前端--Html4
  3. kaggle竞赛 - Home Credit Default Risk金牌心得
  4. python n维向量向任意方向旋转,求旋转矩阵
  5. push时git报错 error: failed to push some refs to 'git@gitee.com:git_zn/jianli.git' 解决办法...
  6. 记一次物理服务器磁盘故障修复过程
  7. alevel计算机教材答案,alevel计算机教材电子版及内容和目录大纲
  8. android-历史版本
  9. vb.net 如何文件指定打印机打印文件_大规模使用FDM 3D打印机的三大挑战
  10. 夜雨数竞笔记-定积分(1)-区间再现公式