C++ Boost入侵哈希表
谁能提供一个简单的例子来说明如何使用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
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_); }
};