我正在尝试使用STL数组和列表创建哈希表。在我的头文件中 它被定义为
typedef std::list<Bike*> BikePtrList;
和2个班级:
class BikeHashTableADT : public std::array< BikePtrList, 256 >
class BikeHashTableIMP : public BikeHashTableADT
我想在列表中存储“Bike*
”,并将列表存储在数组中。
我在cpp文件中做的是调用这个函数
void BikeHashTableIMP::addBikePtr(Bike* ptr)
{
int hashInt = hashFun(ubptr->license); // integer returned from hash function
BikePtrList &tmp=(*this)[hashInt]; // "this" means the class BikeHashTableIMP
std::list<Bike*> tmp.push_back(ptr);
(*this)[hashInt]=tmp;
}
存在运行时错误,每次调用此函数并且新 Bike * ptr 是push_back到列表时,将覆盖存储在列表中的先前数据。 谁能告诉我我的代码有什么问题?
答案 0 :(得分:1)
这一行:
std::list<Bike*> tmp.push_back(ptr);
很奇怪。 std :: list不属于那里。你的意思是写
tmp.push_back(ptr);
行
(*this)[hashInt]=tmp;
似乎也不需要。 tmp已经与(* this)[hashInt]相同。