最初开始禁用 C++ STL,更多地是早期项目编码实践中留下的惯例,被后来的程序员继承下来。老项目中这种选择尤其地多。不过如果有人将其上升到公司行为在不同项目中全面禁用 STL,则没有必要,而且我倾向于做这种决定的人并不理解 C++ 编译系统。
一般来说,项目中禁止用 C++ 多见于两种具体场景:或者项目的产出产品为函数库或者需要引用第三方函数库。常见的是会限制STL的某些容器使用,因为有些容器的操作线程不安全,内存管理也不高效。
但是要是完全禁止STL,也无意义因噎废食。STL包罗的东西很多除了容器还有算法、函数对象等。算法是相当方便的轮子,佩服STL的作者Alex Stepanov,将复杂、相似的问题用算法、迭代器、函数对象这种抽象来解决。
游戏后端不用stl是祖传代码留下来的陋习,最开始服务端代码上来就申请一大块共享内存,重载new,用pod方式存放有限玩家数据。