您好我遇到了一个让我失望的错误。
我有一个向量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返回行会导致分段错误