为什么像虚幻引擎这样的大项目要自己写容器类?

D-R*_*RAJ 16 c++ game-engine c++-standard-library

我浏览了虚幻引擎源代码,发现它们使用自己的容器类,例如内部动态数组。但是 C++ STL 提供了(几乎)所有必需的容器类。那么他们为什么要花时间再次开发相同的容器呢?对于开发人员来说,使用容器std::vector来编写他们的代码而不是试图弄清楚如何使用TArray引擎中的类来做事情不是更容易吗?

cig*_*ien 8

项目可能不使用 STL 容器的原因有几个:

  1. 项目中使用的容器是量身定制的,具有某些不同于 STL 版本的性能特征。

  2. 在设计自定义容器时,STL 容器甚至可能还不存在,因此对工作项目进行如此大的更改是不值得的。

  3. 虽然大多数开发人员习惯于 STL 容器,但特定项目的大多数贡献者实际上可能更习惯于自定义版本,以及它们应该如何使用,并且重新训练所有这些容器可能也不值得付出努力。

对于任何特定项目,上述部分或全部,甚至其他原因都可能导致决定使用自定义容器。


ein*_*ica 5

除了@cigien提到的原因之外 - 即使此类应用程序的开发人员不需要定制的容器,但几个标准库容器仍然非常慢,例如: