【发布时间】:2013-04-20 02:44:33
【问题描述】:
我正在实现数据结构哈希表,其中使用链解决冲突。
因此,作为基础数据结构,我需要列表向量。
我从 2 个变体中进行选择:
std::vector<std::list<entry> >std::vector<std::list<entry>* >
其中 entry 是包含数据和哈希值的结构体;
问题:如果我使用第一个变体(问题是在大输入数据上考虑的),效率会大大降低吗?
提前谢谢你!
【问题讨论】:
-
需要实现哈希表吗? C++11 有 std::unordered_set 和 std::unordered_map (以及它们的“多”对应物)。
-
是的,这是为了教育目的。
-
不要使用
std::list<entry>,除非您从列表中间插入/删除元素的次数比您对其进行迭代的次数多,或者如果entry是不可移动且昂贵的复制,或昂贵的移动。std::list是std::"双向链表",而不是std::"当你想要一个事物列表时使用的理想容器"。
标签: data-structures c++11 stl hashtable