如何获取存储在STL数组中的STL列表?

时间:2016-01-16 14:21:52

标签: c++ arrays list stl

我正在尝试使用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到列表时,将覆盖存储在列表中的先前数据。 谁能告诉我我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

这一行:

std::list<Bike*> tmp.push_back(ptr);

很奇怪。 std :: list不属于那里。你的意思是写

tmp.push_back(ptr);

(*this)[hashInt]=tmp;  

似乎也不需要。 tmp已经与(* this)[hashInt]相同。