c++ - C++ 多索引映射
问题描述
我正在实现一个简单的搜索系统,其中所有数据都存储在正在运行的进程的内存中。
最初,我打算使用元组映射来实现这一点。
map<tuple<int, string, ...>, string> dict
但是,它仅在所有密钥都已知且不丢失时才有效。
例如,假设我有, map<<key1, key2, key3, key4, key5>, value> dict;
我无法在没有 key2 或 key2 的情况下搜索地图是“不在乎”
C++ 中是否有任何标准库或函数可以做到这一点?
非常感谢任何帮助。
解决方案
std::map<int, std::map<string, std::map< ... , string > ... > > dict;
你可以在任何一步“不在乎”。你必须检查那里的每一种可能性。
你可以做一个组合爆炸来做所有的 n! 排序,并让所有内容都指向共享指针或类似的东西。
这并不便宜。
置换每种可能性(n!)中的参数,然后从每个增强选项(具有最小和最大状态)的元组映射到相同的共享数据 ptr。您现在可以进行排序,将左侧或右侧视为最不重要,并使用equal_range
来不关心该键。
您可以改为使用四叉树或八叉树或 n 树结构之类的东西进行攻击。这会进行多维“排序”。让它与任意键一起工作会很有趣。
推荐阅读
- python - CUDA GPU 的 Numba 代码编译失败并出现 OSError:异常:读取访问冲突
- r - 如何使用 R 计算多列的唯一值?
- php - PHP SimpleXMLElement - 在元素中访问值
- python - 如何从 odoo 采购线订单到 stock.picking 线获得价值?
- python - 如何将具有递减值的多行添加到系列中
- python - Tkinter 禁用绑定以在带有文本的对话框中返回键
- google-cloud-firestore - 这是在 NOSQL 中对预算数据建模的最佳方式吗?
- angular - 如何在Angular的发送函数中发送具有复杂逻辑的顺序请求
- c - C中的条件预处理器宏扩展
- reactjs - 调用 this.setState() 时组件未呈现