map属于c++STL中的一种,是有不能重复的关键字和与之相关的值组成(若键值重复,则这个键值所对应的值为最后一次所赋给的值):

#include <string.h>

#include <iostream>
#include <map>
#include <utility>

int main()
{
     map<int, string> Employee;

//通过键值赋值
     Employee[123] = "Mayuefei";

//通过成员函数insert和STL的pair赋值
     Employee.insert(pair<int, string>(132, "Liaoyuanqing"));

//通过value_type赋值
     Employee.insert(map<int, string>::value_type(124, "Liyiyi"));

//通过make_pair赋值
     Employee.insert(make_pair(234, "LLK.D"));

for (map<int, string>::iterator it = Employee.begin(); it != Employee.end(); it++)
{
   cout<<(*it).first<<":"<<(*it).second<<endl;//取值操作
}
system("pause");
return 1;
};

STL map定义了比较操作符,所以其键值能够根据大小自动排序,若你用自己实现的类等数据类型作为键值时,就需要自己提供比较操作符和等于操作符:

struct cmp_str
{
   bool operator()(char const *a, char const *b)  
   {
      return std::strcmp(a, b) < 0;
   }
};    
int main()
{
    map<char *, int, cmp_str> Employees;    
   // map使用自定义类型的例子
   // 1) 通过键值赋值  
    Employees["Mike C."] = 5234;
    Employees["Charlie M."] = 3374;
   
    // 2) 通过成员函数insert() 和STL pair赋值
    Employees.insert(std::pair<char *,int>("David D.",1923));
    // 3)通过成员函数 insert() 和 "value_type()"
    Employees.insert(map<char *,int>::value_type("John A.",7582));
    // 4) 通过成员函数 insert() 和 "make_pair()"
    Employees.insert(std::make_pair((char *)"Peter Q.",5328));
    cout << "Map size: " << Employees.size() << endl;
    for( map<char *, int, cmp_str>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
    {
        cout << (*ii).first << ": " << (*ii).second << endl;
    }
system("pause");
} //看出,若想要map自动为我们排序,就得我们提供操作符的实现,否则,比如上面我们去掉cmp_str后,map只是不为我们排序而已,因为我们用的是自定义的数据类型作为键值,map是不认识的。

STL map使用相关推荐

  1. C++ 笔记(24)— STL map 类(map实例化、插入、查找、删除)

    1. STL 映射类简介 map 和 multimap 是键-值对容器,支持根据键进行查找,区别在于,后者能够存储重复的键,而前者只能存储唯一的键. 为了实现快速查找, STL map 和 multi ...

  2. STL map 简介

    STL map 简介 转载于:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html 1.目录 map简介 map的功能 使用ma ...

  3. 结构体作为STL map的key时需要注意什么? (某公司招聘面试试题)已跪~~~~(_)~~~~

    某公司招聘的面试环节, 有这样一个题目:结构体作为STL map的key时需要注意什么? 对于懂STL map的同学来说, 这个题目还是比较easy的, 先看程序: #include <iost ...

  4. Dictionary,hashtable, stl:map有什么异同?

    Dictionary,hashtable, stl:map有什么异同? 相同点:字典和map都是泛型,而hashtable不是泛型. 不同点:三者算法都不相同 Hashtable,看名字能想到,它是采 ...

  5. C++ STL map的使用

    C++ STL map的使用   2009-12-11 作者:tanker1024 来源:tanker1024的blog   1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的 ...

  6. 学习STL map, STL set之数据结构基础

    STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. C++ STL 之所以得到广泛的赞誉,也被很多人使用 ...

  7. STL map与Boost unordered_map - 有何不可的日志 - 网易博客

    STL map与Boost unordered_map - 有何不可的日志 - 网易博客 STL map与Boost unordered_map 2012-03-30 16:06:26|  分类: c ...

  8. STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树

    STL map 内存改变,迭代器失效,_Isnil(_Ptr)和红黑树 最近在做项目时发现一个crash的问题,当时得到的dmp文件显示crash在一个以map为循环变量的循环中,crash位置在如下 ...

  9. stl::map之const函数访问

    如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...

最新文章

  1. 关于IIS正在使用突然断电后,IIS不能使用解决方案
  2. jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中
  3. pytorch 冻结层操作 + 学习率超参数设置
  4. 测试站点写入文件权限代码下载
  5. 计算机管理器win8.1,没事折腾?Win8.1文件管理器设置几招
  6. linux netcat测试udp端口,使用nc(netcat)测试udp协议与端口连通性
  7. Android 平台下Cordova 调用Activity插件开发
  8. 【Junos】手动生成Core-dump文件
  9. 东方第一等幻象骑士团
  10. 大专计算机应用基础课件,11春大专《计算机应用基础》练习课件.doc
  11. 自学python买什么教材-从入门到进阶必看,51本Python精品书籍免费送!
  12. PADS 9.5封装向导 多一个管脚
  13. 机器数.原码 反码 补码比较理解
  14. javascript:document.all document.getElementsByName
  15. Assigning retained object to weak property object will be released after assignment
  16. asp上传服务器后台图片显示,asp.net上传图片到服务器方法详解
  17. 如何在MATLAB下载附加功能(下载Min-GW总结)
  18. Git基本知识和常用命令(IDEA)
  19. 哪些深度相机有python接口_三种主流深度相机介绍
  20. DTU网关连接MQTT服务器、MQTT.fx工具测试

热门文章

  1. calibre drc lvs 文件位置
  2. 【渝粤教育】电大中专多媒体技术基础作业 题库
  3. 鄂尔多斯计算机考试系统,鄂尔多斯驾驶员理论模拟考试系统
  4. 少儿编程基础课程介绍
  5. C语言大型工程框架设计之设备管理
  6. Multi-Channel PCe QDMARDMA Subsystem
  7. 【原】S1普版加强版 完美仿钻石ROM
  8. android 层进菜单,iOS和Android规范解析——底部浮层(下)
  9. 系统学习NLP(十)--词性标注算法综述
  10. 基于springboot的智慧养老平台