【发布时间】:2011-02-10 18:27:04
【问题描述】:
我正在尝试找出解决此问题的最佳数据结构。我正在使用字符串键实现键值存储。这些值经常被添加,通常只会被查找 1 或 2 次。最初我使用std::map,但我发现性能并不理想,因为添加键和重新平衡红黑树的开销超过了搜索值的时间减少。目前我正在使用修改后的单链表。它使用一个包含 c 字符串 (const char *)、字节长度和存储值的结构。当我想使用键查找值时,我遍历列表并比较键的大小,如果它们匹配,我使用 memcmp 检查字符串是否相同。如果它们相同,则返回该值。与std::map 相比,我使用这种方法可以获得大约 10 倍的性能。但是,我需要将其效率提高约 2 倍。对于这个问题,谁能推荐一种更好的数据结构类型?
【问题讨论】:
-
有多少元素?键的平均大小是多少?
标签: c++ data-structures tree trie