首页 > 解决方案 > C++ 多索引映射

问题描述

我正在实现一个简单的搜索系统,其中所有数据都存储在正在运行的进程的内存中。

最初,我打算使用元组映射来实现这一点。

map<tuple<int, string, ...>, string> dict

但是,它仅在所有密钥都已知且不丢失时才有效。

例如,假设我有, map<<key1, key2, key3, key4, key5>, value> dict;

我无法在没有 key2 或 key2 的情况下搜索地图是“不在乎”

C++ 中是否有任何标准库或函数可以做到这一点?

非常感谢任何帮助。

标签: c++dictionary

解决方案


std::map<int, std::map<string, std::map< ... , string > ... > > dict;

你可以在任何一步“不在乎”。你必须检查那里的一种可能性。

你可以做一个组合爆炸来做所有的 n! 排序,并让所有内容都指向共享指针或类似的东西。

这并不便宜。

置换每种可能性(n!)中的参数,然后从每个增强选项(具有最小和最大状态)的元组映射到相同的共享数据 ptr。您现在可以进行排序,将左侧或右侧视为最不重要,并使用equal_range来不关心该键。

您可以改为使用四叉树或八叉树或 n 树结构之类的东西进行攻击。这会进行多维“排序”。让它与任意键一起工作会很有趣。


推荐阅读