2012-04-16 1 views
1

누구나 Boost Intrusive Hashtable 사용 방법에 대한 간단한 예제를 제공 할 수 있습니까? 구현하려고했지만 운이 좋지 않습니다.Boost Intrusive Hashtable

나는 내 hash_value 함수를 호출하지 않습니다 어떤 이유로 같은이

size_t HashTableIndex::hash_value(MyMessageVector& b) 
{ 
    boost::hash<string> hasher; 
    return hasher(b.getKey()); 
}; 

위의 정의이 지금까지

void HashTableIndex::addToIndex(Message* message) 
{ 
hashtable<MyMessageVector>::bucket_type base_buckets[10000]; 
hashtable<MyMessageVector> htable(hashtable<MyMessageVector>::bucket_traits(base_buckets, 10000)); 
boost::array<MyMessageVector,10000> items; 
htable.insert_unique(items[0]); 

하지만

어떤 이유로 호출 아니에요 내 해시 기능이 . 이것에 대한 도움이 많이 감사 할 것입니다!

+0

같이 See boost::hash documentation:

namespace library { std::size_t hash_value(book const& b) { boost::hash<int> hasher; return hasher(b.id); } } 

또한 클래스에서 선언 된 "친구"기능을 사용할 수 있습니다. .. – RedX

+0

나는 그것에 관해 어떻게 갈 것이냐? – mikez

답변

0

옵션 목록에서 boost::intrusive::hash을 사용하여 해시 테이블에 해시 함수를 제공 할 수 있습니다.

0

회원 기능을 사용하고 있고 boost :: hash에 무료 기능이 필요합니다. 난 당신이 해시 테이블의 인스턴스에 어디서나 해시 함수를 공급 보지 않는 Boost.Intrusive unordered_set documentation:

class MyClass 
{ 
    //... 
    public: 
    friend bool operator== (const MyClass &a, const MyClass &b) 
    { return a.int_ == b.int_; } 

    friend std::size_t hash_value(const MyClass &value) 
    { return std::size_t(value.int_); } 
};