带向量键的高效C ++关联容器

时间:2011-06-23 13:54:33

标签: c++ vector map

我构建了一个以向量为关键字的地图:map<vector<KeyT>, T>我现在正在尝试优化。

手动嵌套地图map<vector<KeyT>, map<KeyT,T> >的实验,其中第一个键是原始向量减去最后一个元素,第二个键是最后一个元素,显示合理的加速。

现在我想知道是否存在关联容器的半标准实现(如boost或类似),其中向量键被实现为容器的这种分层结构。

理想情况下,这将创建与关键向量中的元素一样多的层,同时为不同长度的向量保持统一的语法。

2 个答案:

答案 0 :(得分:1)

您确定需要对其进行优化吗? std :: string基本上就像一个std :: vector,我们很高兴地使用std :: string作为数组键!

您是否描述过您的代码? std :: map不会不必要地复制其键/值对 - 你到底害怕什么?

你的矢量键是固定大小的吗?在这种情况下,std :: tuple可能会有所帮助。

如果没有,根据密钥的长度对容器进行分区可能会有所帮助,尽管这种方案的有效性高度依赖于域。

答案 1 :(得分:0)

我的第一个预感是你希望通过减少密钥的音量来改善地图查找时间。这是散列函数的用途。 C ++ tr1和Boost的名称为unordered_map

的hash_maps

我会尝试在一段时间内设计一个小样本