【工作中学习2】Map的使用及排序(第三个参数)
项目进行中,使用到Map(std::map),Map要点整理如下:
1. Map,也叫关联数组,提供key/value(键/值对),key用来索引,value是被存储和检索的数据。
2. key值唯一(Multimap除外)。
3. Map的内部数据结构是红黑树。
3. 可以用下标操作符,添加Map中的数据,例如map[1] = 2;,用下标操作符查找数据时,如果数据不存在,会被自动插入到Map中。
4. Map中的数据默认按照由key从小到大排序(less),可以修改第三个参数(可选)来修改排序法则。
程序举例:
// testMap.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <string>
#include <map>
#include <iostream> struct SortMap
{
bool operator ()( const int i1, const int i2 )
{
return i1 > i2;
}
}; //traverse the map
void traverseMap(const std::map<int, std::string>& map)
{
std::map<int, std::string>::const_iterator iter = map.begin(); while(iter != map.end())
{
std::cout << "" << iter->first << "," << iter->second << std::endl;
iter++;
}
} void traverseSortMap(const std::map<int, std::string, SortMap>& map)
{
std::map<int, std::string, SortMap>::const_iterator iter = map.begin(); while(iter != map.end())
{
std::cout << "" << iter->first << "," << iter->second << std::endl;
iter++;
}
} int _tmain(int argc, _TCHAR* argv[])
{
std::map<int, std::string> map1;
map1[] = "no";
map1[] = "hi";
map1[] = "me";
map1[] = "ok"; traverseMap(map1);
std::cout << "-------------------------------------------" << std::endl; std::map<int, std::string, SortMap> map2;
map2[] = "no";
map2[] = "hi";
map2[] = "me";
map2[] = "ok"; traverseSortMap(map2); system("pause");
return ;
}
运行结果:

继续努力~
【工作中学习2】Map的使用及排序(第三个参数)的更多相关文章
- 【工作中学习1】两个设计模式:Singleton(单例)和 Adapter(适配器)
好久没有写自己的学习小博客,罪过罪过..最近本菜鸟在项目中接触到经常用到的设计模式,首先是Singleton(单例),这个相信大家都会用到很多,所以自己用代码实现一下,有助于自己学习理解,如有不对,请 ...
- Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)
平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...
- vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
(一)初级个性化配置你的vim 1.vim是什么? vim是Vi IMproved,是编辑器Vi的一个加强版,一个极其强大并符合IT工程师(程序员.运维)习惯的编辑器.如果你是一名职业的SE,那么一定 ...
- 【转】vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
原文地址https://www.cnblogs.com/lxwphp/p/7738356.html (一)初级个性化配置你的vim 1.vim是什么? vim是Vi IMproved,是编辑器Vi的一 ...
- 【工作中学习】CreateProcessAsUser失败,错误码:1314
事情起因是这样, 产品的Windows服务(Service)之前一直是用Local System Account在运行的,但这个版本有需求要换成使用普通的Domain User来运行,如下图: 但却出 ...
- 作为一名IT从业者,你在工作和学习中,遇到哪些问题
版权声明:襄阳雷哥的版权声明 https://blog.csdn.net/FansUnion/article/details/28448975 大家都是IT从业者,遇到的问题多少与类似. 假设能把这些 ...
- 面试和工作中的map
map是C++ STL中的关联容器,存储的是键值对(key-value),可以通过key快速索引到value.map容器中的数据是自动排序的,其排序方式是严格的弱排序(stick weak order ...
- 工作中常用Lixu命令学习笔记
对于Linux,我是菜鸟,也是在工作中了才开始慢慢接触,用Linux的人都我都会觉得屌屌的,现在把工作中常用的一些Linux命令记录一下,供以后学习和参考. cd 这可能是我觉得Linux最简单的一个 ...
- git 工作中常用命令(结合vscode学习git 命令)
作为一名前端开发,大家在工作中常常使用什么开发工具呢,我觉得我首选的是vscode,他配合git使用起来非常方便. 工作中常用三个命令: git终端常使用: git add . git commit ...
随机推荐
- 「模拟赛20180406」膜树 prufer编码+概率
题目描述 给定一个完全图,保证\(w_{u,v}=w_{v,u}\)且\(w_{u,u}=0\),等概率选取一个随机生成树,对于每一对\((u,v)\),求\(dis(u,v)\)的期望值对\(998 ...
- IDEA总是启动不了
时常怎么都打不开这个软件,或者很久很久才打开. 解决办法:在任务管理器将IDEA结束进程,再去打开软件,就可以了.
- linux上传与下载
首先必须安装xshell这个工具 使用xshell来操作服务非常方便,传文件也比较方便.就是使用rz,sz首先,服务器要安装了rz,szyum install lrzsz当然你的本地windows主机 ...
- shiro 的简单应用
shiro 的简单应用 shiro官网:https://shiro.apache.org/ shiro 简介: Apache Shiro(日语"堡垒(Castle)"的意思)是 ...
- C语言值拷贝传递机制
当参数是常量,变量,或表达式时,传递的数据就是这些数据对象所具有的内容,这种方式称为数值参数传递方式(简称传值方式).如果函数调用时所传递的实参是数据对象在内存中的存储单元的首地址值,这种方式称为地址 ...
- Oracle table-lock的5种模式
Oracle中的锁定可以分为几类: 1.DML lock(data lock), 2.DDL lock(dictionary lock) 3.internal lock/latch. DML lock ...
- python3 发送邮件添加附件
from email.header import Headerfrom email.mime.application import MIMEApplicationfrom email.mime.mul ...
- TCP/IP、Http、Https、Socket的区别
网络由下往上分为物理层.数据链路层.网络层( IP协议).传输层( TCP协议).会话层.表示层和应用层(HTTP协议) 接下来我来说说个人理解其中的TCP/IP.Http.Socket的区别 TCP ...
- java——第十二章 异常处理和文本I/O
1.异常处理: 使用try_throw_catch块模块 优点:将检测错误(由被调用的方法完成)从处理错误(由调用方法完成)中分离出来. 例子: package test; import java.u ...
- getResourceAsStream小结
前提:我用的是gradle工程,文件放在resource下,resource对应的就是类路径,文件的路径和代码的路径保持一致,如Client的包名和peizhi.properties一致,例如Clie ...