C多索引映射实现
我正在C 11中实现一个多索引映射,我希望针对特定功能进行优化.我目前要解决的问题是,不要再存储一次关键元素.但让我解释一下.
问题产生于排序直方图以不同的组合覆盖它们.直方图有名称,可以分成标记(属性). 以下是我希望我的属性映射具有的功能: >能够以任何顺序循环遍历属性; 我使用std :: unordered_map和std :: tuple作为key_type在C 11中有一个working implementation.当他们到达一个forward_lists元组时,我正在累积属性值.预期用途是迭代列表以组成键. 我想介绍的优化是仅在列表中存储属性的值,而不是将它们存储在用作映射中的键的元组中.我想保持函数返回const引用到属性值列表的能力,而不是一些包装器的列表. 我知道boost::multi_index具有类似的功能,但是当密钥到达时我不需要排序的开销.我希望按顺序存储新的属性值,并且只能对postfactum进行排序.我也看了boost::flyweight,但是在最简单的方法中,列表将是flyweight< T>而不是T,我不想那样做. (如果这是最好的解决方案,我绝对可以忍受它.) 我知道列表是稳定的,即一旦创建了一个元素,它的指针和迭代器仍然有效,即使在调用list :: sort()之后也是如此.知道了,可以对地图做些什么来消除元组元素的冗余副本吗?自定义地图分配器可以帮助吗? 谢谢你的建议. 解决方法
让你的地图从迭代器的元组到你的支柱容器.
写一个散列,取消引用迭代器并组合结果. 将前向列表prop容器替换为首先对哈希进行排序的集合,然后是内容. 首先在集合中查找,然后在哈希中进行查找. 如果你需要一个不同的道具订单,请拥有另一个set迭代器容器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |