【问题标题】:Direct address table with non-distinct keys具有非不同键的直接地址表
【发布时间】:2012-05-14 02:29:55
【问题描述】:

我正在处理一个练习题,涉及设计一个直接地址表,可能具有非不同的键。约束是 INSERT、DELETE 和 SEARCH 应该在 O(1) 时间内运行; arguments 是指向设置对象的指针。

一个明显的解决方案是使用链接,表条目指向链表的头部(可能为 NULL)。有了这样的链接,INSERT 和 DELETE 肯定会在 O(1) 时间内运行,但是,SEARCH 不会...... 任何建议,将不胜感激。

【问题讨论】:

    标签: c++ c c++11 hashtable associative-array


    【解决方案1】:

    研究 STL 关联容器 std::unordered_setstd:unordered_mapstd::unordered_multisetstd::unorderd_multimap 的设计,具体取决于您是否要存储 {unique, non-unique} 和 {keys, key-values}。如果您没有 C++11 编译器(例如 MSVC++ >= 2010 或 gcc >= 4.4),您可以使用 Boost.Unordered

    更新: 如果您正在专门寻找 C 库:请查看 http://attractivechaos.wordpress.com/2008/09/02/implementing-generic-hash-library-in-c/

    【讨论】:

    • 他需要非不同的键,但他可以使用多映射(无论如何如果 C++ 11 是一个选项)
    • 谢谢。是的,如果 C++ 11 是一个选项。我也在尝试用 C 设计一个解决方案,并编辑标签。
    • @Iceman 我用 C 实现的链接更新了我的答案。
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2014-07-17
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多