SU3*_*SU3 5 c++ dictionary tuples c++11
我正在 C++11 中实现多索引映射,我希望针对特定功能对其进行优化。我目前正在尝试解决的问题是不要多次存储关键元素。但让我解释一下。
问题来自对直方图进行排序以将它们以不同的组合覆盖。直方图有名称,可以拆分为标记(属性)。
以下是我希望我的房产地图具有的功能:
我有一个工作实现在C ++ 11使用std::unordered_map与std::tuple作为key_type。当属性值到达一个 forward_lists 元组时,我正在累积它们。预期用途是遍历列表以组合键。
我想介绍的优化是只将属性的值存储在列表中,而不是将它们存储在用作映射键的元组中。我想保持让函数返回对属性值列表的常量引用的能力,而不是一些包装器的列表。
我知道boost::multi_index具有类似的功能,但我不需要在键到达时进行排序的开销。我希望按顺序存储新的属性值,并且只能在事后排序。我也看过boost::flyweight,但在最简单的方法中,列表将是 offlyweight<T>而不是T,我不想这样做。(如果这是最好的解决方案,我绝对可以接受。)
我知道列表是稳定的,即一旦创建了一个元素,它的指针和迭代器仍然有效,即使在调用list::sort(). 知道这一点,可以对地图做些什么来消除元组元素的冗余副本吗?自定义地图分配器可以在这里提供帮助吗?
感谢您的建议。
让你的映射从迭代器元组到你的 prop 容器。
编写一个散列,取消引用迭代器并组合结果。
将前向列表属性容器替换为首先按哈希排序,然后是内容的集合。
首先在集合中查找,然后在哈希中查找。
如果您需要不同的 props 顺序,请使用另一个集合迭代器容器。
| 归档时间: |
|
| 查看次数: |
4167 次 |
| 最近记录: |