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

Efficient C++ associative container with vector key

本文关键字:C++ 关联 高效 向量      更新时间:2023-10-16

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

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

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

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

您确定需要优化它吗?std::string基本上类似于std::vector,我们很乐意使用std::字符串作为数组键!

你已经分析了你的代码吗?std::map不会不必要地复制它的键/值对——你到底害怕什么?

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

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

我的第一个直觉是,您希望通过减少键的体积来提高地图查找时间。这就是散列函数的作用。C++tr1和Boost具有名为unordered_map 的hash_maps

我将在一段时间内尝试在这里设计一个小样本