求 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;}