首页 > 解决方案 > 具有多种排序和集合的映射(例如不是 [] 类型的映射索引)

问题描述

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

map<string, bigRecord> mainMap; 矢量学生;

主地图:

学生:“Eric”、“Greg”、Pete”

地图<string, twoStringRecordPrevNext>

学生身高图:

学生体重地图:

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

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

关于更好方法的任何想法?

标签: c++sortingdictionary

解决方案


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

学生身高图:

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

学生身高向量:

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

推荐阅读