【问题标题】:Map with multiple sorts and sets (like index into the map by not the [] kind)具有多种排序和集合的映射(例如不是 [] 类型的映射索引)
【发布时间】:2021-12-03 07:02:57
【问题描述】:

我有一个大的记录映射,我需要以不同于键的顺序访问映射的子集(有点像数据库的索引)。假设地图上有很多人,并且列出了所有学生(大子集)。其中一个字段是以英寸为单位的高度,另一个是以磅为单位的重量。给定一个学生,我想找到下一个最短和下一个最重的学生。我目前有基于不同字段将键映射到下一个和上一个键的小地图。我正在努力想出更好的办法。

map mainMap; 矢量学生;

主地图:

  • “埃里克”,73、174,学生
  • “格雷格”, 71, 176, 学生
  • “保罗”, 70, 173, 不是学生
  • “皮特”,72、175,学生

学生: “埃里克”、“格雷格”、皮特”

map

学生身高地图:

  • "Eric", prev="Pete", next=""
  • "格雷格", prev="", next="Pete"
  • "Pete", prev="Greg", next="Eric"

studentWieghtMap:

  • "Eric", prev="", next="Pete"
  • "格雷格", prev="Pete", next=""
  • "Pete", prev="Eric", next="Greg"

一旦设置了 mainMap(更新无效列表),我创建学生迷你地图,然后可以轻松找到下一个/上一个给定键。只是需要维护很多地图。

使用 SQL 数据库效果不佳,因为 mainMap 中有数千个集合(即学生是本示例中的集合)和数百万条记录。

对更好的方法有什么想法吗?

【问题讨论】:

标签: c++ sorting dictionary


【解决方案1】:

休息后又回来,我认为“上一个/下一个”的事情是不好的部分。我只需要一个 studentHeightVector 来配合小地图。现在,给定“Greg”,我知道这是向量中的第一项,并且可以通过递增找到下一个最高的元素,第二个元素是“Pete”,我可以在 mainMap 中查找。

学生身高地图:

  • “埃里克”,3
  • “格雷格”,1
  • “皮特”,2

studentHeightVector:

  1. “格雷格”
  2. “皮特”
  3. “埃里克”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多