【发布时间】:2021-12-03 07:02:57
【问题描述】:
我有一个大的记录映射,我需要以不同于键的顺序访问映射的子集(有点像数据库的索引)。假设地图上有很多人,并且列出了所有学生(大子集)。其中一个字段是以英寸为单位的高度,另一个是以磅为单位的重量。给定一个学生,我想找到下一个最短和下一个最重的学生。我目前有基于不同字段将键映射到下一个和上一个键的小地图。我正在努力想出更好的办法。
map
主地图:
- “埃里克”,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 中有数千个集合(即学生是本示例中的集合)和数百万条记录。
对更好的方法有什么想法吗?
【问题讨论】:
-
可能相关:Anyone uses boost::multiindex as a one-table database?(如果您需要参考该问题所问的内容:Boost.MultiIndex)
标签: c++ sorting dictionary