【工作中学习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),可以修改第三个参数(可选)来修改排序法则。

  程序举例:

 1 // testMap.cpp : Defines the entry point for the console application.
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <string>
 6 #include <map>
 7 #include <iostream>
 8 
 9 struct SortMap  
10 {
11     bool operator ()( const int i1, const int i2 )  
12     {  
13         return i1 > i2;  
14     }  
15 };
16 
17 //traverse the map
18 void traverseMap(const std::map<int, std::string>& map)
19 {
20     std::map<int, std::string>::const_iterator iter = map.begin();
21     
22     while(iter != map.end())
23     {
24         std::cout << "" << iter->first << "," << iter->second << std::endl;
25         iter++;
26      }
27 }
28 
29 void traverseSortMap(const std::map<int, std::string, SortMap>& map)
30 {
31     std::map<int, std::string, SortMap>::const_iterator iter = map.begin();
32 
33     while(iter != map.end())
34     {
35         std::cout << "" << iter->first << "," << iter->second << std::endl;
36         iter++;
37     }
38 }
39 
40 
41 int _tmain(int argc, _TCHAR* argv[])
42 {
43     std::map<int, std::string> map1;
44     map1[1] = "no";
45     map1[6] = "hi";
46     map1[5] = "me";
47     map1[9] = "ok";
48     
49     traverseMap(map1);
50     std::cout << "-------------------------------------------" << std::endl;
51     
52     std::map<int, std::string, SortMap> map2;
53     map2[1] = "no";
54     map2[6] = "hi";
55     map2[5] = "me";
56     map2[9] = "ok";
57     
58     traverseSortMap(map2);
59     
60     system("pause");
61     return 0;
62 }

  运行结果:

  继续努力~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

举例详解Python中的split()函数的使用方法

这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列...

1865
来自专栏增长技术

Swift体验2

使用if和switch做条件判断,使用for-in,for,while,do-while做循环 操作。括号中的条件或循环变量是可选的。括号的身体是必需的。

1043
来自专栏mathor

LeetCode138. 复制带随机指针的链表

 第一步:复制结点,复制的结点放在待复制的结点后,依然组成一个单链表  第二步:串接随机指针  第三步:将原单链表与复制链表拆开

572
来自专栏Python私房菜

你真的会正确使用断言吗?

断言是作为一种调试工具被发明出来的,用来检查那些“代码写对了就肯定成立”的条件。例如我们要断言一个变量a必须要大于2,就可以这样写:

713
来自专栏奇点大数据

Scala语言学习笔记一

Scala是一门小众的语言,但是作者因为工作原因要以Spark作为工作中的一个重心,而Spark采用了Scala语言编写,于是萌生了认真学习Scala的念头,在...

3554
来自专栏大数据文摘

谷歌R语言格式指南

1543
来自专栏佳爷的后花媛

PHP manual(update)

直接改变数组的值自 PHP 5 起可以通过引用传递来做到。之前的版本需要需要采取变通的方法

1171
来自专栏大前端开发

ES6特性之:Rest参数

其实在JavaScript中,通过使用arguments对象也能实现这种可变参数的能力,但是,arguments对象本身有点奇怪,它看起来像一个数组,但其实它不...

763
来自专栏C语言及其他语言

实例说明

上一节,我们大致总揽了一个简单C程序的框架,程序如下: #include<stdio.h> /*引入头文件*/ int main(void) /*一个简单的C程...

2668
来自专栏前端儿

字符串替换

每行数据是一个字符串,长度不超过1000  数据以EOF结束输出对于输入的每一行,输出替换后的字符串样例输入

882

扫码关注云+社区