std :: vector是否适合频繁调整大小?

Hem*_*lin 4 c++ stl resize vector code-design

我正在创造一个我有小"粒子"的游戏.它们的数量经常变化(每隔几秒钟),我想知道存储它们的最佳方法是什么.是std::vectorstd::deque为了这个美好的?

是否可以保留永远不会被使用的空间(在那个容器中)(我有上限)?

And*_*rew 7

如果顺序无关紧要,我可以将其替换为向量中的另一个,而不是移除粒子(我认为它不重要)

std::vector<Particle> particles;
Run Code Online (Sandbox Code Playgroud)

在索引处删除粒子时i- 只需用最后一个填充空白区域:

particles[i] = particles.back();
particles.pop_back();
Run Code Online (Sandbox Code Playgroud)

如果使用指针向量,你可以使它更快.

  • ...在C++ 11中,您可以编写`particles [i] = std :: move(particles.back())`并充分利用这两个世界.当然,您的代码依赖于C++ 11. (3认同)
  • 我不认为使用指针向量会更快.使用指针向量,他将失去记忆连续的事实.它实际上取决于粒子实际上是什么以及涉及何种计算. (2认同)