Dav*_*hme 15
首先,您应该使用它们,如果它们可以帮助您解决问题.模板是C++中非常重要的一部分,多年来一直是标准的一部分.STL在运行时非常强大和快速,应该在所有体面的编译器上得到支持,但当然存在问题.
仅举几例,但不使用它们的缺点可能会更大.
Wil*_*ean 11
明显的缺点:
语法可能很糟糕 - C++中的一些模板语法真正推动了理智的极限,并与语言的其他部分重叠(例如>>)
很多人不太了解STL,所以你可能会限制你的观众.
错误消息往往非常复杂.
STL集合的设计往往会导致大量的对象复制.原始的"智能指针"(std :: auto_ptr)不适合在大多数集合中使用.最近这方面的情况有所改善(TR1)
有几个潜在的好处和缺点
话虽如此,我们使用C++和模板(以及在某些领域,元编程技术),以利于我们的整体代码库.代码略大于没有模板的代码,但性能和可维护性的权衡大于规模.我们拥有熟练/经验丰富的C++程序员,致力于开发和维护代码.
如果您使用缺点来决定是否使用C++功能/库 - 请确保您同样权衡语言和项目/产品/公司愿意权衡的好处.希望这可以帮助.
编辑:我忘了提到的另一个主要缺点 - 便携性.如果您需要编写可移植代码,模板可能不是正确的方法.今天大多数流行的编译器都支持STL,但大多数都不是全部.元编程技术可以成为可移植性的真正杀手,因此这是决定其使用的适当性的明确考虑因素.