在STL当中如果元素,或者说key的类型不是默认数据类型的话,我们需要自己定义比较函数对象,查找函数对象,以及哈希函数对象,我呢,自己写了这个例子,只是语法上合乎

规范,让自己记住下,恩

// 函数对象.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<hash_map>
#include<algorithm>
using namespace std;
struct stuInfo
{
int num;//学号
char name[20];//姓名
};
struct infoEqual
{
static const int bucket_size=95;
//比较函数对象,确定是否能插入
bool operator()(const stuInfo a,const stuInfo b)const
{
return (a.num==b.num)&&(strcmp(a.name,b.name)==0);
}
//哈希函数对象,用于确定放在哪个bucket当中
size_t operator()(const stuInfo a)const
{
return a.num;
}
};
//查找函数对象
class cus_find
{
public :
char name[30];
int num;
cus_find(char*s,int a)
{
strcpy(name,s);
num=a;
}
bool operator()(pair<stuInfo,char*> a)
{
return (strcmp(a.first.name,name)==0)&&(a.first.num==num);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
hash_map<stuInfo,char*,infoEqual>hh;
stuInfo h={12,"苏轼"};
char *hn="苏轼";
hh[h]=hn;

hash_map<stuInfo,char*,infoEqual>::iterator itr=find_if(hh.begin(),hh.end(),cus_find("苏轼",12));
if(itr!=hh.end())
{
cout<<"找到了该生信息"<<endl;
cout<<"\t"<<(*itr).first.name<<endl;
}
return 0;
}

这个过程不是很舒服,不过好在已经弄出来了,哈哈