我有大约70-150个不同的结构X,带有无符号整数ID字段.它们在程序初始化时被读入并初始化,之后从未修改过.在以下(或其他一些方法?)中访问它们(发生了很多次)的最快方法是什么?
使用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中看到的一个问题是它在访问模式中可能有点稀疏,但如果这是最快的方式,则不确定如何解决这个问题.
使用vector肯定是最快的方法: