【发布时间】:2014-04-21 22:58:52
【问题描述】:
经过 2 个月的应用数学研究,我找到了一种方法来管理我的应用领域中的数据(待发布...)。简而言之,我的应用程序域需要一个关联容器,在内存中是连续的,以避免大型超级计算应用程序中的缓存未命中。快速插入和删除不是优先级:优先级是通过std::upper_bound 对keys 进行尽可能快的二分搜索。我有一个早期的工作实现,但现在我正在考虑实现一个具有良好设计的STL-like 容器。
所以,我的关联容器具有以下属性:
- 它通常包含
10和100数百万个keys和values -
keys是8、16、32、64或128位的无符号整数 -
values通常是~10不同类型的元组 - 每个
key关联到一个value - 最关键的操作是对
keys的二分查找(可能通过调用std::upper_bound) - 插入/删除/排序并不重要
所以我的问题是:最好的内部实现是什么(当然我最终会运行一些基准测试,但放弃一些可能性会很好):
-
std::vector<std::pair<Key, Type>>带有指向std::pair<Key, Type>的迭代器 -
std::pair<std::vector<Key>, std::vector<Type>>带有指向std::pair<Key&, Type&>的迭代器 - 其他解决方案?
什么是最好的解决方案? 任何评论或想法将不胜感激......
【问题讨论】:
标签: c++11 vector stl associative-array binary-search