C++中简单高效的容器,具有map和list容器的特性

Jon*_*han 2 c++ containers linked-list map

我正在寻找一个既能享受地图容器又能享受列表容器优势的C++容器.

我希望维护地图容器的优点:

  • O(log(n))访问
  • operator []易于使用
  • 稀疏的本性

列出我想维护的容器优势:

  • 订单之间有订单
  • 能够轻松遍历列表更新:通过基于键或值的排序顺序

一个简单的示例应用程序是保存某些有效日期(业务日期,假日,其他一些重要日期......)的列表,一旦给定特定日期,您可以立即找到它"地图样式",然后找到下一个有效日期"列表样式".

sth*_*sth 8

std::map已经是一个已排序的容器,您可以按顺序迭代所包含的项目.但它只提供O(log(n))访问.

std::tr1::unordered_map(或std::unordered_map在C++ 0x中)具有O(1)访问权限但未排序.

你真的需要O(1)访问吗?您必须使用大型数据集并对O(log(n))进行多次查找,但速度不够快.

如果O(log(n))足够,则std::map提供您要求的所有内容.


Die*_*lla 5

如果您不考虑稀疏性,可以查看Boost Multi-Index库.对于稀疏性质,你可以看看Boost Flyweight库,但我想你必须自己加入这两种方法.请注意,您的要求通常是矛盾的,很难实现.例如,O(1)和项目之间的顺序难以有效维护.