您真正需要做的就是定义一个struct至少包含键和值的成员,然后定义一个可以容纳多个该结构的容器.容器只需要支持三种基本操作:Insert,Remove和Find.
几乎任何类型的数据结构都可以,但在简单的实现和效率之间有不同的权衡.一些最可能的选择是:
数组或链表:如果您知道永远不会有大量数据,效率并不是真正的问题,那么您可以简单一点.Find操作可以只是一个简单的线性搜索.
已排序的数组:您还可以选择在每次插入或删除条目时保持一个简单的数组.这使得Find算法可以使用二进制搜索,如果需要Find比插入或删除更频繁,则可能更合适.
一个红黑树:如果你想为O(log N)插入/删除/查找提供高效的性能C++的std::map大型数据集,红黑树是一个不错的选择.这也保证了元素按键排序,如果您需要处理数据的子范围,这很有用.
一个哈希表:C++ 11引进std::unordered_map的,如果你能找到或产生的哈希函数.您的密钥类型,你可以通过实现一个哈希表模仿在C.此数据结构具有O(1)平均情况插入/删除/查找,但O(N)最坏情况插入/删除/查找.条目未排序.
实现红黑树或哈希表可能有点棘手,但是有许多可用的免费实现可供您查找和使用.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |