zoukankan      html  css  js  c++  java
  • 【工作中学习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 }

      

      运行结果:

      

      继续努力~

  • 相关阅读:
    几种连接数据库的OLEDB驱动程序
    Javascript如何访问和处理系统文件
    如何自学Java 经典
    Android Studio 修改 包名
    Android Studio -导入项目 gradle处理
    Android Studio- 把项目提交到SVN中操作方法
    android studio 运行太慢了
    Java多线程 -sleep 用法详解
    Java -native 方法
    Java多线程 -yield用法
  • 原文地址:https://www.cnblogs.com/KevinSong/p/3725133.html
Copyright © 2011-2022 走看看