当前位置:  开发笔记 > 编程语言 > 正文

模板和C++中的STL的缺点

如何解决《模板和C++中的STL的缺点》经验,为你挑选了3个好方法。

使用STL或模板是否有任何缺点.是否存在任何不合适的情况.



1> David Nehme..:

首先,您应该使用它们,如果它们可以帮助您解决问题.模板是C++中非常重要的一部分,多年来一直是标准的一部分.STL在运行时非常强大和快速,应该在所有体面的编译器上得到支持,但当然存在问题.

如果您有一个非常旧的编译器,可能不完全支持STL.

STL实现的线程安全性可能适用于您的应用程序

模板可能导致编译时间变慢,可能导致可执行文件更大,特别是对于较旧的编译器.

编译器经常使用模板在代码上产生难以理解的错误消息.

仅举几例,但不使用它们的缺点可能会更大.


STLfilt对错误消息有很大帮助.
你认为模板的错误消息是坏的,尝试在类头文件的末尾留下分号!;)

2> Will Dean..:

明显的缺点:

语法可能很糟糕 - C++中的一些模板语法真正推动了理智的极限,并与语言的其他部分重叠(例如>>)

很多人不太了解STL,所以你可能会限制你的观众.

错误消息往往非常复杂.

STL集合的设计往往会导致大量的对象复制.原始的"智能指针"(std :: auto_ptr)不适合在大多数集合中使用.最近这方面的情况有所改善(TR1)



3> twokats..:

有几个潜在的好处和缺点

模板扩展了生成的代码的大小.

模板化代码在编译时进行扩展和处理,这可能会使编译时间更长.(另一方面,可执行代码可能更有效).

使用不当的STL元素会导致代码变慢

STL实际上使代码更具可读性(我的观点与Will的不同).就像任何语言或库,你必须了解它适当地使用它...这是谁的人一个缺点,知道这一点.

如果您在元编程意义上使用模板(不要使用STL混淆),代码看起来就像是一种完全不同于C++的语言.解析代码实际执行的操作可能更难.(OTOH,做得对 - 元编程让你专注于架构和设计;它也会带来更多的错误来编译时间与运行时间.当你有一个关键功能并且你可以捕获错误编码的片段时,这是一个很大的胜利在编译时,而不是让客户在操作期间捕获它!)

话虽如此,我们使用C++和模板(以及在某些领域,元编程技术),以利于我们的整体代码库.代码略大于没有模板的代码,但性能和可维护性的权衡大于规模.我们拥有熟练/经验丰富的C++程序员,致力于开发和维护代码.

如果您使用缺点来决定是否使用C++功能/库 - 请确保您同样权衡语言和项目/产品/公司愿意权衡的好处.希望这可以帮助.

编辑:我忘了提到的另一个主要缺点 - 便携性.如果您需要编写可移植代码,模板可能不是正确的方法.今天大多数流行的编译器都支持STL,但大多数都不是全部.元编程技术可以成为可移植性的真正杀手,因此这是决定其使用的适当性的明确考虑因素.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有