Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost入侵哈希表_C++_Boost_Hashtable_Boost Intrusive - Fatal编程技术网

C++ Boost入侵哈希表

C++ Boost入侵哈希表,c++,boost,hashtable,boost-intrusive,C++,Boost,Hashtable,Boost Intrusive,谁能提供一个简单的例子来说明如何使用Boost入侵哈希表?我试着去实现它,但我运气不好 到目前为止,我有这个 void HashTableIndex::addToIndex(Message* message) { hashtable<MyMessageVector>::bucket_type base_buckets[10000]; hashtable<MyMessageVector> htable(hashtable<MyMessageVector>::bu

谁能提供一个简单的例子来说明如何使用Boost入侵哈希表?我试着去实现它,但我运气不好

到目前为止,我有这个

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]);
void HashTableIndex::addToIndex(Message*Message)
{
哈希表::bucket_类型基本_bucket[10000];
hashtable htable(hashtable::bucket_traits(base_bucket,10000));
boost::数组项;
htable.insert_unique(项目[0]);
但出于某种原因,它并没有调用我的散列函数,上面定义的散列函数是这样的

size_t HashTableIndex::hash_value(MyMessageVector& b)
{
    boost::hash<string> hasher;
    return hasher(b.getKey());
};
size\t哈希表索引::哈希值(MyMessageVector&b)
{
boost::散列哈希器;
返回hasher(b.getKey());
};

出于某种原因,它不会调用我的哈希值函数。如果您能提供任何帮助,我们将不胜感激。

您可以使用选项列表中的
boost::intrusive::hash
将哈希函数提供给哈希表。

您使用的是一个成员函数,而boost::hash需要一个自由函数


在哈希表的实例化中,我看不到您在任何地方提供哈希函数。。。
namespace library
{
    std::size_t hash_value(book const& b)
    {
        boost::hash<int> hasher;
        return hasher(b.id);
    }
}
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_); }
};