我有大约 70-150 个带有无符号整数 ID 字段的不同结构 X。它们在程序初始化时被读入并初始化,此后不再修改。在以下(或其他方法?)中,访问它们的最快方法是什么(这种情况经常发生):
使用 std::vector v; 其中 v[X.id] = X;通过执行 X& x = v[id]; 访问 (这应该在开始时做一个副本,但后来只是在本质上是一个平面数组上通过 id 进行查找。
同上,但 std::vector v; X* x = v[id]; 我对这个很谨慎,因为它有一个额外的间接级别。
std::map - 与上面相比感觉有点矫枉过正?
与上面相同,但 unordered_map - 再次出现 70-150 次可能甚至不会超过建议 3。
还有更聪明的吗?我在 1 中看到的一个问题是访问模式可能有点稀疏,但如果这是最快的方法,我不确定如何解决这个问题。