1 map的本质

(1)关联式容器,键值对应

(2)增加和删除节点对迭代器的影响很小。

(3)对于迭代器来说不可以修改键值,只能修改对应的实值。

(4)map内部数据的祖居是自建一颗红黑树(或者说是平衡二叉树),具有自动排序的功能。

2 map的查增删

(1)map的插入

  1. #include <map>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. //方式一 pair
  9. map<int,string> mapStudent;
  10. mapStudent.insert(pair<int,string>(1,"lan"));
  11. mapStudent.insert(pair<int,string>(2,"ji"));
  12. mapStudent.insert(pair<int,string>(1,"kjh"));
  13. map<int,string>::iterator iter;
  14. map<int,string>::iterator iter1;
  15. //方式二
  16. map<int string> mapStudent1;
  17. mapStudent1.insert(map<int,string>::value_type(1,"nihao"));
  18. mapStudent1.insert(map<int,string>::value_type(1,"ben"));
  19. for(iter=mapStudent.begin();iter!=mapStudent.end();iter++)
  20. {
  21. cout<<iter->first<<" "<<iter->second<<endl;
  22. }
  23. for(iter=mapStudent1.begin();iter!=mapStudent1.end();iter++)
  24. {
  25. cout<<iter->first<<" "<<iter->second<<endl;
  26.  
  27. }
  28. return 0;
  29. }

2 map的遍历

  1. #include <map>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. map<int,string> mapStudent;
  9. mapStudent[1]="stu_one";
  10. mapStudent[1]="stu_two";
  11. mapStudent[1]="stu_three";
  12. map<int,string>::iterator iter = mapStudent.find(1);
  13. if(iter!=mapStudent.end())
  14. {
  15. cout<<"找到了 value="<<iter->second<<endl;
  16. }else
  17. {
  18. cout<<"没有找到"<<endl;
  19. }
  20. return 0;
  21. }

3 map的删除

  1. #include <map>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. map<int,string> mapStudent;
  9. mapStudent[1]="stu_one";
  10. mapStudent[1]="stu_two";
  11. mapStudent[1]="stu_three";
  12. map<int,string>::iterator iter = mapStudent.begin();
  13. for(;iter!=mapStudent.end();)
  14. {
  15. if((*iter).sencond=="stu_one")
  16. {
  17. mapStudent.erase(iter++);//iter被erase以后就会失效 所以后面不能再有iter++
  18. }else
  19. {
  20. ++iter;
  21. }
  22. }
  23. for(iter=mapStudent1.begin();iter!=mapStudent1.end();iter++)
  24. {
  25. cout<<iter->first<<" "<<iter->second<<endl;
  26.  
  27. }
  28. return 0;
  29. }

4 map排序

默认按照key从小到大。从大到小greater 相反less

  1. #include <map>
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5. int main()
  6. {
  7. map<string,int,greater<string>> mapStudent;
  8. mapStudent['nisan']=90;
  9. mapStudent['nisan']=70;
  10. mapStudent['nisan']=80;
  11. map<string,int>::iterator iter = mapStudent.begin();
  12. for(iter=mapStudent.begin();iter!=mapStudent.end();iter++)
  13. {
  14. cout<<iter->first<<" "<<iter->second<<endl;
  15. }
  16. return 0;
  17. }

自定义排序方式

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. struct CmpByKeyLength
  5. {
  6. bool operator()(const string &k1,const string&k2){
  7. return k1.length()<k2.length();
  8. }
  9. };
  10. int main()
  11. {
  12. map<string,int,CmpByKeyLength>mapStudent;
  13. mapStudent['nisan']=90;
  14. mapStudent['nisan']=70;
  15. mapStudent['nisan']=80;
  16. map<string,int>::iterator iter = mapStudent.begin();
  17. for(iter=mapStudent.begin();iter!=mapStudent.end();iter++)
  18. {
  19. cout<<iter->first<<" "<<iter->second<<endl;
  20. }
  21. return 0;
  22. }

------>加油美好的一天

c++中stl----map的更多相关文章

  1. STL MAP及字典树在关键字统计中的性能分析

    转载请注明出处:http://blog.csdn.net/mxway/article/details/21321541 在搜索引擎在通常会对关键字出现的次数进行统计,这篇文章分析下使用C++ STL中 ...

  2. stl中的map数据类型

    1.1 STL map 1.1.1 背景 关联容器使用键(key)来存储访问读取元素,而顺序容器则通过元素在容器中的位置存储和访问元素. 常见的顺序容器有:vector.list.deque.stac ...

  3. STL中关于map和set的四个问题?

    STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. ...

  4. STL 中的map 与 hash_map的理解

    可以参考侯捷编著的<STL源码剖析> STL 中的map 与 hash_map的理解 1.STL的map底层是用红黑树存储的,查找时间复杂度是log(n)级别: 2.STL的hash_ma ...

  5. STL中的map和unordered_map

    STL中的map和unordered_map map 头文件:#include 原理:std::map的内部实现了一颗红黑树,有对其键值进行排序的功能,所以map是一个有序的容器,map中的每一个元素 ...

  6. STL中的map和hash_map

    以下全部copy于:http://blog.chinaunix.net/uid-26548237-id-3800125.html 在网上看到有关STL中hash_map的文章,以及一些其他关于STL ...

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

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

  8. hdu4941 Magical Forest (stl map)

    2014多校7最水的题   Magical Forest Magical Forest Time Limit: 24000/12000 MS (Java/Others)    Memory Limit ...

  9. [CareerCup] 13.2 Compare Hash Table and STL Map 比较哈希表和Map

    13.2 Compare and contrast a hash table and an STL map. How is a hash table implemented? If the numbe ...

  10. STL map 用法

    首先make_pair Pairs C++标准程序库中凡是"必须返回两个值"的函数, 也都会利用pair对象  class pair可以将两个值视为一个单元.容器类别map和mul ...

随机推荐

  1. 储存技术(SLC、MLC、TLC和QLC的NAND闪存技术)和Optane Memory

    1.转载:Optane Memory 2.构成SSD的主要IC有主控芯片和NAND闪存,SLC.MLC和TLC三者都是闪存的类型 需要说明的闪存的寿命指的是写入(擦写)的次数,不是读出的次数,因为读取 ...

  2. Active Directory虚拟机搭建域控服务器环境

    前言 还是和上一章一样,痛苦过后还是记录下给后来人提供便利为妙. 虚拟机选择:建议Hyper-V或者VMware 系统选择:建议WIindows Server 2003及以上 我这里是使用VMware ...

  3. Core Data 版本号迁移经验总结

    大家在学习和使用Core Data过程中,第一次进行版本号迁移的经历一定是记忆犹新,至少我是这种,XD.弄的不好,就会搞出一些因为迁移过程中数据模型出错导致的Crash.这里总结了一下Core Dat ...

  4. linux新建文件和文件夹命令

    1.touch命令 touch命令用来修改文件的访问时间.修改时间.如果没有指定时间,则将文件时间属性改为当前时间. 当指定文件不存在,touch命令变为创建该文件. 语法: touch [-acm] ...

  5. 九度OJ 1093:WERTYU (翻译)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1563 解决:609 题目描述: A common typing error is to place the hands on the ke ...

  6. 在给mysql数据库备份时,报错: mysqldump: Got error: 145: Table '.\shengdaxcom\pre_forum_thread' is marked as c rashed and should be repaired when using LOCK TABLES

    在给mysql数据库备份时,报错: mysqldump: Got error: 145: Table '.\shengdaxcom\pre_forum_thread' is marked as cra ...

  7. NOIP考前感悟

    闭关这么久,后来突然后悔自己前几天和暑假的状态很頽 不然进步也还能多一点吧 还好提前发现了,最后也还是努力了一把 也算不枉费自己的选择吧 从初中开始学习OI,到头来也没有什么成果 但还好自己高一 也还 ...

  8. 配置tomcat,访问端口改为80

    首先:找到tomcat的的config文件夹下的server.xml文件: 编辑server.xml 保存server.xml文件,重启tomcat服务器,即可. 亲测好使.

  9. 2 Maven使用入门

    一.编写pom.xml文件     Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等. ...

  10. appium()-The event firing

    原文地址:https://github.com/appium/java-client/blob/master/docs/The-event_firing.md since 4.1.0 The purp ...