毫无疑问,对于大多数C++编程项目,我都会选择使用STL。然而,最近我遇到了一个问题,“有没有什么情况下你不会使用STL?”
我越想,我就越意识到也许在某些情况下我应该选择不使用STL……例如,一个非常大的长期项目,其代码库预计将持续数年……也许一个完全符合项目需求的自定义容器解决方案值得最初的开销?你是怎么想的,有没有什么情况下你会选择不使用STL?
发布于 2008-10-06 15:21:19
具有严格内存要求的项目(如嵌入式系统)可能不适合使用STL,因为很难控制和管理从堆中取出和返回到堆中的内容。正如Evan提到的,编写适当的分配器可以帮助解决这一问题,但如果您正在计算使用的每个字节或关注内存碎片,更明智的做法可能是手动编写一个针对特定问题量身定做的解决方案,因为STL已经针对最常见的用法进行了优化。
您还可以选择在特定情况下不使用STL,因为存在更多不在当前标准中的适用容器,例如boost::array或boost::unordered_map。
发布于 2008-10-06 14:29:00
不使用STL的主要原因是:
在实践中,这两者都是非常罕见的需求。
对于一个长期项目来说,滚动您自己的与STL在功能上重叠的容器只会增加维护和开发成本。
发布于 2008-10-06 14:33:13
使用stl有很多优点。对于一个长期项目来说,收益大于成本。
也就是说,STL容器根本不处理并发。因此,在需要并发的环境中,我会使用其他容器,如Intel TBB并发容器。它们使用细粒度锁定进行了更高级的处理,这样不同的线程就可以并发地修改容器,而不必序列化对容器的访问。
https://stackoverflow.com/questions/174449
复制相似问题