当您选择使用像Qt这样的框架时,您可能会考虑使用Qt中的列表,向量等而不是STL.在这种情况下,不使用STL可以避免在需要在GUI中使用STL时将其从STL转换为Qt等效项.
这是有争议的,并不是每个人都想使用Qt的所有东西
来自http://doc.qt.nokia.com/latest/containers.html
这些容器类设计为比STL容器更轻,更安全,更易于使用.如果您不熟悉STL,或者喜欢以"Qt方式"执行操作,则可以使用这些类而不是STL类.
并不真地。没有理由禁止使用整个库 - 除非该库仅提供一种功能,而标准库则不然。所提供的设施应根据每个功能进行评估 - 例如,您可能会争辩说您需要一个比 执行更具体用途的容器vector
,但这并不是禁止使用deque
或iostream
的借口for_each
。
更重要的是,通过模板生成的代码不会比手工编写的等效代码更加臃肿。您不会通过拒绝使用std::vector
然后编写 float 和 double 的等效向量来节省代码膨胀。尤其是在 2011 年,在绝大多数情况下,与媒体等其他事物的大小相比,可执行文件的大小毫无意义。
如果您非常关心可执行文件的大小,那么您可能希望避免在程序中使用 STL。
例如,uTorrent不使用 STL,这也是它如此之小的原因之一。
由于STL确实非常依赖模板(毕竟它是标准模板库),因此很多时候您使用模板,编译器必须为您在处理STL时使用的每种类型生成额外的代码。
这是编译时多态性,使用越多,可执行文件的大小就会增加。
如果您从项目中排除 STL(并谨慎使用或根本不使用模板),您的代码大小将会变小。请注意,它不一定会更快。
另请注意,我不是在谈论程序在执行期间的内存使用情况,因为这取决于您在应用程序的生命周期内分配的对象数量。
我说的是你的二进制文件的可执行文件。
如果您想要一个示例,请注意,一个简单的 Hello world 程序在编译后可能比一个巧妙的代码演示更大,后者可以在一个非常小的可执行文件中包含整个 3D 引擎(运行时生成)。
有关 uTorrent 大小的一些信息:
官方FAQ(从2008年开始),这个问题没有出现在最近的FAQ中。
请注意,尽管 uTorrent >300kb 并且使用UPX压缩,但当您考虑到它的功能时,它仍然非常小。
归档时间: |
|
查看次数: |
4077 次 |
最近记录: |