VS2012关于hash_map的使用简略

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的使用简略,布布扣,bubuko.com

时间: 2024-12-16 05:31:27

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

C++ STL hash_map的使用以及STL hash_map的大“坑”

计算机编程中经常会用到hash表,而在C++中,使用STL编程更是少不了的.本文将介绍STL中hash_map的使用.在hash_map中使用自定义类型作为key值的方法以及在使用char *类型作为key值时遇到的问题. 一.需要的头文件以及命名空间 在linux下使用STL hash_map除了需要引用其所在头文件<hash_map>之外还要引用其命名空间.像这样写  1 using namespace __gnu_cxx; 二.hash_map的定义 先来看看hash_map是怎么定义的

关于安装vs2012以后SqlSever2008失效的问题

今天安装了vs2012,以前都是用的vs2010,感觉vs2012用的更爽了,无论流畅程度,还是很色的界面,都让我很喜欢. 可没开心多久,就发现数据库连不上了,查了不少资料,找到原因了!!特来分享一下 这时因为安装Visual Studio 2013或者2012版本的时候,会自动安装"Microsoft SQL Server 2013(2012) Express LocalDB"服务,导致原本的SQL2008无法正常工作. (1) 打开控制面板,找到卸载程序,把"Micros

DICOM医学图像处理:DCMTK在VS2012中的配置

背景: 最近由于项目需要,将原本的开发IDE环境由VS2008升级到了VS2012.本以为编译完成后的DCMTK开源库可以直接从VS2008移植到VS2012.但是通过项目属性添加完包含目录和依赖库后,编译会出现大量的链接错误(大多是跟dcmdata.lib.oflog.lib有关). 解决方法: 重新按照原本的博客前辈柳北风儿(大神目前已经博客转移到网易:http://blog.163.com/[email protected]/),利用CMake工具,选择VS2012本地编译器对DCMTK3

vs2012 webservice创建

第一步:打开VS2012,新建空项目,注意选择.NET Framework的版本.这里我选择的是.NET Framework 4 新建好项目后,在项目中添加一个WebService项 打开这个文件,我们可以看到,代码如下 [csharp] view plaincopyprint? using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Service

使用vs2012连接国内版Azure

vs2012装了最新windows azure sdk连接国际版azure非常简单,输入用户名密码 连接国内版azure必须使用证书 使用vs2012连接国内版Azure,布布扣,bubuko.com

MVC VS2012 Code First 数据库迁移教程

1.在"服务资源管理器"连接数据库 2.打开工具-Nuget程序包管理器"程序包管理器控制台" 3.控制台输入命令:PM> Enable-Misgrations 4.以项目MvcGuestbook.Models.MvcGuestbookContext为例: PM> Enable-Misgrations-ContextTypeName MvcGuestbook.Models.MvcGuestbookContext 5.更新数据库:PM>Update-

VS2012发布到XP平台

默认情况下,你的VS2012工程发布后,在XP下运行会出现提示“not a valid win32 application”. 微软推出了Visual Studio 2012 update 1可以支持发布到XP平台,这个更新好像只能在线安装,比较麻烦. 然而就算你打了补丁,你的程序在XP下可能还会出现 “无法定位程序输入点 FlushProcessWriteBuffers 于动态链接库 KERNEL32.dll 上” 这样的错误提示.见http://bbs.csdn.net/topics/390

c语言学生管理系统链表(dev vs2012下可以运行)

struct student { char name[10]; char sex[5]; long int num;//学号 int xuhao; int age; float score[3]; float averange; char DJ;//存放等级哦 struct student *next; };//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明 int n;//存放学生人数 int man;//存放统计的男生数 float JY(float a)//校验成绩使范围0-10

opencv2.4.9+vs2012安装配置

需要下载并安装vs2012  http://pan.baidu.com/s/1qXP76CO 然后OpenCV下载安装OpenCV2.4.9 for Windows 官网太慢 直接百度云链接 http://pan.baidu.com/s/1slAmHqd OpenCV的安装是解压出来到一个文件夹,然后将文件夹移动到某个目录放着就好了,我的安装目录为D:\program,在下文中多次重复出现,需要根据你自己的实际路径作修改. 在环境变量的Path变量中末尾插入";D:\Program Files\