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

# include<hash_map>
#include<iostream>
#include<string>
struct order
{
char orderNO[20];
char name[10];
int NO;
char type;
};
typedef order Order;
struct cmp{
enum
{
bucket_size=100,
};
size_t operator()(Order order1)
{
return sizeof(order1.orderNO)+sizeof(order1.name)+sizeof(order1.NO)+sizeof(order1.type);
} bool operator()(Order order1,Order order2)
{
if(strcmp(order1.orderNO,order2.orderNO)>0)
return true;
else if(strcmp(order1.orderNO,order2.orderNO)<0)
return false;
else
{
if(strcmp(order1.name,order2.name)>0)
return true;
else if(strcmp(order1.name,order2.name)<0)
return false;
else{
if(order1.NO>order2.NO)return true;
else if(order1.NO<order2.NO)return false;
else{
if(order1.type>order2.type)return true;
else return false;
}
}
}
} }; struct CharLess : public std::binary_function<const char*,const char*, bool>
{
public:
result_type operator()(const first_argument_type& _Left, const second_argument_type& _Right) const
{
return(stricmp(_Left, _Right) < 0 ? true : false)<span style="font-family: Arial, Helvetica, sans-serif;">;</span>
}
}; struct CharLess1 : public std::binary_function<char*, char*, bool>
{
public:
result_type operator()(const first_argument_type& _Left, const second_argument_type& _Right) const
{
return(stricmp(_Left, _Right) < 0 ? true : false);
}
}; void testHashMap()
{
stdext::hash_map<int,int> mhasp_map1;
for(int i=0;i<9;i++)
mhasp_map1.insert(stdext::pair<int,int>(i,i+10));
stdext::hash_map<int,int>::iterator mit1=mhasp_map1.begin();
while(mit1!=mhasp_map1.end())
{
std::cout<<mit1->first<<" "<<mit1->second<<std::endl;
mit1++;
} stdext::hash_map<const char*,std::string,std::hash_compare<const char *,CharLess> > testhash;
testhash["东方不败"]="葵花宝典,技压群雄";
testhash["西门吹雪"]="寒剑三尺,削铁如泥";
testhash["上官玉儿"]="花容月貌,一笑倾城";
stdext::hash_map<const char *,std::string,std::hash_compare<const char *,CharLess> >::iterator testhashit=testhash.begin();
while(testhashit!=testhash.end())
{
std::cout<<testhashit->first<<" "<<testhashit->second.c_str()<<std::endl;
testhashit++;
}
char a[20];
scanf("%s",a);
std::cout<<testhash.find(a)->first<<std::endl; stdext::hash_map<char *,std::string,std::hash_compare<char *,CharLess1> > testhash1;
testhash1["东方不败"]="葵花宝典。技压群雄";
testhash1["西门吹雪"]="寒剑三尺,削铁如泥";
testhash1["上官玉儿"]="花容月貌,一笑倾城";
stdext::hash_map<char *,std::string,std::hash_compare<char *,CharLess1> >::iterator testhashit1=testhash1.begin();
while(testhashit1!=testhash1.end())
{
std::cout<<testhashit1->first<<" "<<testhashit1->second<<std::endl;
testhashit1++;
} //char a[20]; scanf("%s",a);
std::cout<<testhash.find(a)->first<<std::endl;
//std::cout<<testhash1.find("东方不败")->first<<std::endl;
stdext::hash_map<std::string,std::string> testhash2;
testhash2["东方不败"]="葵花宝典,技压群雄";
testhash2["西门吹雪"]="寒剑三尺,削铁如泥";
testhash2["上官玉儿"]="花容月貌。一笑倾城";
stdext::hash_map<std::string,std::string>::iterator testhashit2=testhash2.begin();
while(testhashit2!=testhash2.end())
{
std::cout<<testhashit2->first<<" "<<testhashit2->second<<std::endl;
testhashit2++;
} scanf("%s",a);
std::string str(a);
std::cout<<testhash2.find(str)->first<<std::endl; Order order1={"SR405","小麦",100,10};
Order order2={"SR406","小麦",100,10};
Order order3={"SR406","小米",100,10};
Order order4={"SR406","小米",101,10};
Order order5={"SR406","小米",101,11};
stdext::hash_map<Order,std::string,cmp> teststruct;
teststruct.insert(std::pair<Order,std::string>(order1,"sr112"));
teststruct.insert(std::pair<Order,std::string>(order2,"sr113"));
teststruct.insert(std::pair<Order,std::string>(order3,"sr114"));
teststruct.insert(std::pair<Order,std::string>(order4,"sr115"));
teststruct.insert(std::pair<Order,std::string>(order5,"sr116"));
stdext::hash_map<Order,std::string,cmp>::iterator it;
it=teststruct.find(order1);
std::cout<<it->second<<std::endl;
g<span style="font-family: Arial, Helvetica, sans-serif;">etchar();</span>
}
int main()
{
testHashMap();
getchar();
}

假设有不明白的地方。请參考博客: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. C++中vector用法

    在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<in ...

  2. 搜索 || BFS || POJ 2157 Maze

    走迷宫拿宝藏,拿到所有对应的钥匙才能开门 *解法:从起点bfs,遇到门时先放入队列中,取出的时候看钥匙够不够决定开不开门,如果不够就把它再放回队列继续往下走,当队列里只有几个门循环的时候就可以退出,所 ...

  3. DirectX9:高级着色语言(HLSL)

    一.简介 高级着色语言(High)可以编写顶点着色器和像素着色器,取代固定功能流水线中的部分功能,在图形卡的GPU(Graphics Processing Unit,图形处理单元)中执行 注意:如果图 ...

  4. [BZOJ3211]:花神游历各国(小清新线段树)

    题目传送门 题目描述: 花神喜欢步行游历各国,顺便虐爆各地竞赛.花神有一条游览路线,它是线型的,也就是说,所有游历国家呈一条线的形状排列,花神对每个国家都有一个喜欢程度(当然花神并不一定喜欢所有国家) ...

  5. Python3使用PyMySQL操作数据库

    1. 安装PyMySQL pip install PyMySQL 关于PyMySQL的详细内容可以查看官方文档  Github 2. 创建表 在某个数据库内,使用以下指令建表 CREATE TABLE ...

  6. ssh和sshd服务

    1.1 对称加密和非对称加密 对称加密:加密和解密使用一样的算法,只要解密时提供与加密时一致的密码就可以完成解密.例如QQ登录密码,银行卡密码,只要保证密码正确就可以. 非对称加密:通过公钥(publ ...

  7. svn服务

    svn服务实战应用指南 1.1     svn介绍 什么是svn? svn(sub-version)是近年来崛起的非常优秀的版本管理工具,与cvs管理工具一样,svn是一个跨平台的开源的版本控制系统, ...

  8. KNN算法原理及实现

    1.KNN算法概述 kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.该方法在确定分类决策上只依据最邻近的一 ...

  9. 爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中

    爬虫简单之二---使用进程爬取起点中文网的六万多也页小说的名字,作者,等一些基本信息,并存入csv中 准备使用的环境和库Python3.6 + requests + bs4 + csv + multi ...

  10. python中的函数的分类

    函数的种类 传参的基本要求 默认参数 *args 关键字参数 **kwargs 普通函数 带参数 默认参数 def text(a,b=2) print("haha") print( ...