插入哈希表

时间:2016-12-05 20:31:01

标签: c++ hashtable

您好我遇到了一个让我失望的错误。

我有一个向量bucketVector,它是对列表的向量

std::vector <std::list<std::pair<K, V> > >  bucketVector;

这是我的哈希表,当我尝试插入字符串的哈希表时,我的insert函数会导致浮点异常。 (K和V是键和值数据类型)。

bool HashTable<K, V>::insert(const std::pair<K, V> & kv) {

    auto & whichList = bucketVector[myhash(kv.first)];

    //if( find( begin( whichList ), end( whichList ), kv ) != end( whichList ) )
        //return false;

    whichList.push_back( kv );
     if( ++currentSize > whichList.size( ) )
        rehash( );


     return true;
}

哈希函数:

size_t HashTable<K, V>::myhash(const K &k) const {

    std::hash<K> makehash;


    return makehash(k) % bucketVector.size();

}

然而,尝试插入字符串对&#34; bob dole&#34;进入表后会导致行后的浮点异常

auto & whichList = bucketVector[myhash(kv.first)]; 
插入函数中的

编辑: 正如有人指出的那样,第一次插入时大小为零,导致浮点异常。但是,仅使用诸如5之类的常量替换myhash返回行会导致分段错误

0 个答案:

没有答案