具有向量键的高效C++关联容器
Efficient C++ associative container with vector key
我构建了一个以向量为关键的映射: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
我将在一段时间内尝试在这里设计一个小样本
相关文章:
- 关联容器的下界复杂性:成员函数与非成员函数
- std::future_error:无关联状态
- 查找自动生成键并具有线性内存消耗的小型关联数组
- 如何在 OpenCV 中将图像与另一个图像相关联
- 删除提升存档对象也会删除与其关联的流?
- 变量如何以及在何处可能没有C++关联的名称?
- 将正态随机变量与任意 RHO(corrcoef) 相关联
- 试图(稍微)概括C++模板.关联容器键:值反转
- 如何打印源文件中与 GDB 中的程序流关联的所有行号
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 与 std::unique_ptr 和抽象类关联的编译错误
- 如何创建一个对象创建函数,该函数将由与其关联的名称调用?
- 访问与使用 TraceLoggingWrite 提供的事件关联的用户数据
- 创建一个结构的关联数组,以创建一个缓冲区,供键快速访问
- 如何在 c++ 中创建分组多重映射键和关联值的表
- 为什么标准关联有序容器允许"const char*"作为其键?
- 如何使用 PHPCPP 传递对象数组,遍历每个对象并返回关联数组
- 枚举的复合赋值运算符真的应该根据其关联的算术运算符来定义吗?
- 如何使用 Ryzen 7 修复 Windows 上 Qt 5.9 线程的处理器关联
- 这些代码如何相互关联?