我有许多由其二维坐标(有符号短距离)标识的项目。每个项目都是包含 64KB 数据的类。任何时候都有大约 500-1500 个项目。项目通常围绕一个点以约 20 个为一组。我的问题是我应该如何映射它们,以免占用太多内存。项目将被缓慢添加/删除(每秒 1-10 个),并且会被非常频繁地获取,因此从列表中获取元素(指向更大结构的指针)应该尽可能快。
我想出的是会有一些 gridContainer 类,可以说它将存储 64x64 指针的矩形。我将拥有主网格容器,它将存储其他 gridContainer,而这个嵌套的 gridContainer 将存储我想要映射的实际项目(这将允许 4096x4096 个实际项目)。要访问特定项目,例如 [260, 130],我会将其除以 64 并取商以找到父 gridContainer 位置,余数以找到嵌套 gridContainer 位置。所以对于 [270,145] 我将有 [4,2] 和 [14,17]。
我也在考虑使用std::map
,但我不知道它的内部结构,也不知道我应该期待它的性能。
对我的方法有什么建议或有更好的方法吗?