VS关于hash_map使用的一些经常使用构造方法汇总,包含基本类型和结构体,相信够一般模仿使用:

  1. # include<hash_map>
  2. #include<iostream>
  3. #include<string>
  4. struct order
  5. {
  6. char orderNO[20];
  7. char name[10];
  8. int NO;
  9. char type;
  10. };
  11. typedef order Order;
  12. struct cmp{
  13. enum
  14. {
  15. bucket_size=100,
  16. };
  17. size_t operator()(Order order1)
  18. {
  19. return sizeof(order1.orderNO)+sizeof(order1.name)+sizeof(order1.NO)+sizeof(order1.type);
  20. }
  21.  
  22. bool operator()(Order order1,Order order2)
  23. {
  24. if(strcmp(order1.orderNO,order2.orderNO)>0)
  25. return true;
  26. else if(strcmp(order1.orderNO,order2.orderNO)<0)
  27. return false;
  28. else
  29. {
  30. if(strcmp(order1.name,order2.name)>0)
  31. return true;
  32. else if(strcmp(order1.name,order2.name)<0)
  33. return false;
  34. else{
  35. if(order1.NO>order2.NO)return true;
  36. else if(order1.NO<order2.NO)return false;
  37. else{
  38. if(order1.type>order2.type)return true;
  39. else return false;
  40. }
  41. }
  42. }
  43. }
  44.  
  45. };
  46.  
  47. struct CharLess : public std::binary_function<const char*,const char*, bool>
  48. {
  49. public:
  50. result_type operator()(const first_argument_type& _Left, const second_argument_type& _Right) const
  51. {
  52. return(stricmp(_Left, _Right) < 0 ? true : false)<span style="font-family: Arial, Helvetica, sans-serif;">;</span>
  53. }
  54. };
  55.  
  56. struct CharLess1 : public std::binary_function<char*, char*, bool>
  57. {
  58. public:
  59. result_type operator()(const first_argument_type& _Left, const second_argument_type& _Right) const
  60. {
  61. return(stricmp(_Left, _Right) < 0 ? true : false);
  62. }
  63. };
  64.  
  65. void testHashMap()
  66. {
  67. stdext::hash_map<int,int> mhasp_map1;
  68. for(int i=0;i<9;i++)
  69. mhasp_map1.insert(stdext::pair<int,int>(i,i+10));
  70. stdext::hash_map<int,int>::iterator mit1=mhasp_map1.begin();
  71. while(mit1!=mhasp_map1.end())
  72. {
  73. std::cout<<mit1->first<<" "<<mit1->second<<std::endl;
  74. mit1++;
  75. }
  76.  
  77. stdext::hash_map<const char*,std::string,std::hash_compare<const char *,CharLess> > testhash;
  78. testhash["东方不败"]="葵花宝典,技压群雄";
  79. testhash["西门吹雪"]="寒剑三尺,削铁如泥";
  80. testhash["上官玉儿"]="花容月貌,一笑倾城";
  81. stdext::hash_map<const char *,std::string,std::hash_compare<const char *,CharLess> >::iterator testhashit=testhash.begin();
  82. while(testhashit!=testhash.end())
  83. {
  84. std::cout<<testhashit->first<<" "<<testhashit->second.c_str()<<std::endl;
  85. testhashit++;
  86. }
  87. char a[20];
  88. scanf("%s",a);
  89. std::cout<<testhash.find(a)->first<<std::endl;
  90.  
  91. stdext::hash_map<char *,std::string,std::hash_compare<char *,CharLess1> > testhash1;
  92. testhash1["东方不败"]="葵花宝典。技压群雄";
  93. testhash1["西门吹雪"]="寒剑三尺,削铁如泥";
  94. testhash1["上官玉儿"]="花容月貌,一笑倾城";
  95. stdext::hash_map<char *,std::string,std::hash_compare<char *,CharLess1> >::iterator testhashit1=testhash1.begin();
  96. while(testhashit1!=testhash1.end())
  97. {
  98. std::cout<<testhashit1->first<<" "<<testhashit1->second<<std::endl;
  99. testhashit1++;
  100. }
  101.  
  102. //char a[20];
  103.  
  104. scanf("%s",a);
  105. std::cout<<testhash.find(a)->first<<std::endl;
  106. //std::cout<<testhash1.find("东方不败")->first<<std::endl;
  107. stdext::hash_map<std::string,std::string> testhash2;
  108. testhash2["东方不败"]="葵花宝典,技压群雄";
  109. testhash2["西门吹雪"]="寒剑三尺,削铁如泥";
  110. testhash2["上官玉儿"]="花容月貌。一笑倾城";
  111. stdext::hash_map<std::string,std::string>::iterator testhashit2=testhash2.begin();
  112. while(testhashit2!=testhash2.end())
  113. {
  114. std::cout<<testhashit2->first<<" "<<testhashit2->second<<std::endl;
  115. testhashit2++;
  116. }
  117.  
  118. scanf("%s",a);
  119. std::string str(a);
  120. std::cout<<testhash2.find(str)->first<<std::endl;
  121.  
  122. Order order1={"SR405","小麦",100,10};
  123. Order order2={"SR406","小麦",100,10};
  124. Order order3={"SR406","小米",100,10};
  125. Order order4={"SR406","小米",101,10};
  126. Order order5={"SR406","小米",101,11};
  127. stdext::hash_map<Order,std::string,cmp> teststruct;
  128. teststruct.insert(std::pair<Order,std::string>(order1,"sr112"));
  129. teststruct.insert(std::pair<Order,std::string>(order2,"sr113"));
  130. teststruct.insert(std::pair<Order,std::string>(order3,"sr114"));
  131. teststruct.insert(std::pair<Order,std::string>(order4,"sr115"));
  132. teststruct.insert(std::pair<Order,std::string>(order5,"sr116"));
  133. stdext::hash_map<Order,std::string,cmp>::iterator it;
  134. it=teststruct.find(order1);
  135. std::cout<<it->second<<std::endl;
  136. g<span style="font-family: Arial, Helvetica, sans-serif;">etchar();</span>
  137. }
  138. int main()
  139. {
  140. testHashMap();
  141. getchar();
  142. }
  1.  

假设有不明白的地方。请參考博客:http://blog.csdn.net/sdhongjun/article/details/4517325,这位大神写的比較具体,细致看看。

VS2012关于hash_map的使用简略的更多相关文章

  1. VS2012+EF6+Mysql配置心路历程

    为了学习ORM,选择了EntityFramework,经历了三天两夜的煎熬,N多次错误,在群里高手的帮助下,终于成功,现在将我的心路历程记录下来,一是让自己有个记录,另外就是让其它人少走些弯路. 我的 ...

  2. VS2010 VS2012 VS2013 VS2015启动调试时老是提示正在下载公共符号

    VS2010 VS2012 VS2013 VS2015启动调试时老是提示正在下载公共符号,下载一些.dll文件,点取消后也能继续调试,但特别慢.解决方法:工具-选项,或者调试-选项和设置,将调试下的& ...

  3. VS2012程序打包部署详解

    VS2012没有自带打包工具,所以要先下载并安装一个打包工具.我采用微软提供的打包工具:  InstallShield2015LimitedEdition.下载地址:https://msdn.micr ...

  4. 从网上找的 visual studio 的各个版本下载地址,vs2010/vs2012/vs2013带注册码

    从网上找的 visual studio 的各个版本下载地址,很全,从 6.0 一直 到 vs2013,要的拿去吧... Microsoft Visual Studio 6.0 下载:英文版360云盘下 ...

  5. VS2012 Unit Test 个人学习汇总(含目录)

    首先,给出MSDN相关地址:http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TestTools.UnitTesting.a ...

  6. VS2012 Unit Test —— 我对IdleTest库动的大手术以及对Xml相关操作进行测试的方式

    [1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的 ...

  7. VS2012 Unit Test——Microsoft Fakes入门

    如题,本文主要作为在VS2012使用Fakes的入门示例,开发工具必须是VS2012或更高版本. 关于Fakes的MSDN地址:http://msdn.microsoft.com/en-us/libr ...

  8. 在Qt Creator 和在 vs2012 里添加信号和槽

    原文地址:http://www.cnblogs.com/li-peng/p/3644812.html 作者:李鹏 出处:http://www.cnblogs.com/li-peng/ 本文版权归作者和 ...

  9. vs2012 安装entity framework

    1.安装vs2012 2.打开vs2012的工具下的扩展工具 3.搜索nuget,没安装的直接在线安装 4.安装好了NuGet,程序包管理器控制台 5.执行命令Install-Package Enti ...

随机推荐

  1. 在.vue文件中让html代码自动补全的方法(支持vscode)

    在.vue文件中让html代码自动补全的方法(支持vscode) https://blog.csdn.net/qq_36529459/article/details/79196763 "fi ...

  2. java根据freeMark模板生成内容

    根据ftl模板生成文件内容可以用来生成代码模板,如下所示: aa.ftl name : ${name} age : ${age} aa.java package mall_tools; import ...

  3. fossil 使用

    ~$ fossil updateCannot figure out who you are! Consider using the --usercommand line option, setting ...

  4. C指针计算字符串长度

    #include <stdio.h> int stringLength (const char *string) { const char *cptr = string; while ( ...

  5. dll加载遇到的问题

    dll加载有两种形式,分别是隐式加载和显式加载. 隐式加载在编译的时候就将dll文件编译到可执行文件中去,程序发布的时候可以不用讲dll带着.缺点是,这样编译出来后,程序会很大. 显式加载是指在程序运 ...

  6. windows中彻底卸载mysql

    1)停止MySQL服务 打开控制面板→管理工具→服务(找到MySQL) 2)卸掉mysql server 打开控制面板→程序与功能→找到mysql server然后卸载 3)将mysql目录下的安装文 ...

  7. bash实现自动补全

    yum install -y bash-completion source /usr/share/bash-completion/bash_completion 执行后yum拥有选项自动补全功能 对于 ...

  8. l5-repository基本使用--结合使用artisan

    一.从头开始创建 1.执行以下artisan: php artisan make:entity Student 如果某个文件已经存在,则不会创建新的文件去覆盖原有的文件,案例如下: 2.修改model ...

  9. python re 正则表达式

    元字符和其含义 . 匹配除换行符以外的任意字符 \ 转义字符,使后一个字符改变原来的意思 \w 匹配字母.数字.下划线:[A-Za-z0-9_] \W 匹配特殊字符:[^A-Za-z0-9_] \s ...

  10. UI进阶 XML解析适配 'libxml/tree.h'file not found 错误解决办法

    Xcode 'libxml/tree.h'file not found 错误解决办法