c++ - 在 std::map 中使用 2 个键
问题描述
我试图std::map
用 2 个键创建一个。我可以使用std::pair
或创建一个结构并将其用作键。
在我的软件中,有一个经常被调用的搜索功能。此功能按第 1 键或第 2 键搜索。
如果我在地图中有大约 1000 个项目,我想如果我想搜索它需要一些时间。所以我想如果我制作另一个std::map
持有第二个键并且值是第一个键的值,那么我可以获取该值并在另一个地图中搜索以获得真正的值。
但我的猜测是这将占用更多内存。在这种情况下,最好的选择是什么?
解决方案
蛮力方法
您可以将您的项目存储在std::vector
其中并拥有两个映射:第一个具有您的第一个键和指向向量项目的指针(或索引),第二个具有您的第二个键和指向向量项目的指针(或索引)。问题是在修改您的集合时维护所有三个容器。
指针与索引:正如注释中正确指出的那样,指针很危险,但如果您要从向量中删除项目,则更简单。否则索引更安全。
聪明的方法
您可以使用专为与您的情况完全相同的案例而设计的Boost.MultiIndex容器。
推荐阅读
- sql-server - 如何在 SSIS 中创建一个任务,用户可以在每次运行包时更改变量的值?
- azure - OCR Google 无法在 Azure 上运行
- java - 如果我在不同的网络/域中,是否可以使用计算机名称而不是 IP?
- python - Tensorflow Reshape 因 TypeError 失败:不允许使用 `tf.Tensor` 作为 Python `bool`
- c# - C#如何制作字典
>? - hibernate - 从另一个表中获取字段
- react-native - 有一种方法可以在输入 Native Base 之上“提升”标签
- flutter - 在颤振中使用 bloc 模式时的建议
- mule - 我们如何在不使用邮递员的情况下在 mule 应用程序中动态生成 oauth2.0 令牌?
- javascript - 来自 CodePen 的完全相同的代码不起作用 - MDC 未定义错误