我想保留一个对象列表,以便我可以遍历它们并通过遍历每个对象来通知每个对象一个事件。我不关心他们收到通知的顺序,我只需要对这些对象的迭代和方法调用尽快发生。
这种功能最有效的(C++ 标准库)数据结构是什么?
最佳答案
每当您发现自己在问“哪种方式更快,X 或 Y?”或“最快的 X 是什么?”这样的问题时,只有一个真正的答案:
对其进行基准测试。
如果您处于不确定的阶段并且只能选择一个,那么这里有一条经验法则,除非测量结果另有规定:
- 它的尺寸是固定的吗?使用
std::array
或普通 C 数组。 - 它是否总是在某个固定范围内?使用
std::array
或普通 C 数组。 - 否则,使用
std::vector
。
请注意,如果您在运行时找到所需的大小,则可以使用 std::vector::reserve
潜在地减少所需的内存分配数量,从而提高性能.当然,你会测量它只是为了确定 ;)
另请注意,“高效”在不同的领域可能有不同的含义。例如,使用较少的 RAM 对某些人来说可能更好,即使是以 CPU 周期为代价。
关于c++ - 最有效的 C++ 数据结构,用于在顺序无关紧要时进行迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48707268/