具有多种比较功能的单标::地图/多地图
Single std::map/multimap with multiple comparison functions?
这可能吗? 这甚至有意义吗? 例如,如果我有一个地图的比较函数,我需要(pos 1)作为键(按顺序):
交流血型机 管 局公元前八CB
但随后我可能想获得订单:
机 管 局血型交流八公元前CB
我知道我可以得到更低/更高并从那里进行比较。 另外,如果我有后者的比较功能怎么样。 可以通过不同的比较功能和相同的地图来完成先验吗?
::std::map
是一种复杂的数据结构,它以特定顺序保存元素。重新排序此数据结构将意味着完全销毁它并从头开始重新创建它。所以不,这不能完全按照您指定的方式完成。
但它是可以做到的。它需要多个地图,并且有效地为非平凡数据留出空间需要存储指向数据的指针,而不是数据本身。在这种情况下,如何处理密钥取决于密钥的确切含义。在某些情况下,您可能还希望存储指向键的指针,或者可能只是再次使用数据指针并让比较函数从数据中提取键。
相关文章:
- 为什么不;名字在地图上是按顺序排列的吗
- 尝试通过多个向量访问变量时,向量下标超出范围
- 基于多个条件处理地图中的所有元素
- QTreeView幻灯片多选后无法使用单击选择
- 在C++中将矢量转换为嵌套地图
- g++ 说函数不存在,即使包含正确的标头
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 在CMake中使用find_package时,是否会显式包含标头
- 为什么在单例中,检查类==空?
- 错误"Could not find Boost"(缺少:上下文标头)
- 替换基于地图的所有引用
- 如何区分地图中的 0 和 false?
- 地图计数确实很重要,或者只是检查是否存在
- 如何在标头中声明(或定义)函数的问题
- 如何避免在仅标头库中C++类/变量重定义
- 矢量下标超出SFML游戏中的范围
- 如何从地图中删除矢量对象
- 如何处理列表控制标头中的右键单击事件
- 具有多种比较功能的单标::地图/多地图
- 为什么这种使用提升测试 - 单标头变体崩溃