首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求 VS 2008 中 hash_set 运用自定义类型的方法

2012-12-24 
求 VS 2008 中 hash_set 使用自定义类型的方法在hash_set中如果包含的是基本类型或者某些预定义的类型的话

求 VS 2008 中 hash_set 使用自定义类型的方法
在hash_set中如果包含的是基本类型或者某些预定义的类型的话,就可以直接使用如hash_set<int>这样的形式来初始化。

但是,我现在有一个自定义的类 class MyClass {...}; 我想使用hash_set这个容器来容纳这个MyClass,我应该怎么做?

最好能给出相应的代码,百度上面复制粘贴一大段的绝不给分!
[解决办法]
可以的

#include<iostream>
#include <hash_set>
using namespace std;
using namespace stdext;

struct T {
T(int x):value(x){}
int value;
bool operator==(const T& o) {
return value==o.value;
}
};
struct htraits {
// comparisons
bool operator()(const T& lhs,const T& rhs) const {
return !(lhs.value==rhs.value); //注意这里的逻辑
}
// hashing function
size_t operator()(const T& key) const {
return key.value;
}
// bucket information
static const size_t bucket_size=4u;
static const size_t min_buckets=8u;
};

int main() {
hash_set<T,htraits> ht;
hash_set<T,htraits>::iterator it;
T a(1),b(2),c(3);
ht.insert(a);
ht.insert(b);
it=ht.find(c);
if (it!=ht.end())
cout <<it->value<<endl;
return 0;
}

热点排行