使用STL的真正好处是什么

What are the real benefits of using STL?

本文关键字:是什么 STL 使用      更新时间:2023-10-16

你们中有多少人在项目中广泛使用STL?

我从来没有使用过STL的东西,首先,我不是一个专业的程序员,只是在需要的时候为高性能计算应用程序编写一些程序/库的人,对我来说,我认为STL并不是特别有用:

1,它提供了一些功能,如排序、哈希表、二叉树,但实现通常不是很优化,性能也不好,我可以很容易地找到替代品或自己编写,性能更好,有时甚至更好。

2,它提供了一些容器,我可以很容易地自己写。

3,它使用了大量的C++结构/warppers/语法,我学习和掌握这些确实需要时间。

所以,当项目中有很多程序员需要一致的编程接口,而我不应该为我的应用程序费心时,我可以说STL只用于高生产率编程吗?

仅仅因为你在大学里学习了数据结构和算法课程,并不意味着你实际上应该实现这些东西。如果没有特定领域的知识,您很可能是错的,并且无法实现这些数据结构的更高效版本。它们是通用的算法和容器,让你的生活变得轻松。它们让你的生活变得轻松:

1) 正确-您不需要调试它们。

2) 快——它们的速度与一般情况下的速度差不多。

3) 可维护性——你和你的同龄人都能阅读并理解他们在做什么。在许多情况下,标准库的使用是自我记录的。为什么要重新发明轮子?

我教过数据结构和算法,我可以告诉你,那些成绩最高、编写最快解决方案、提前完成、编写更干净代码的学生,都很好地利用了STL。做得最差的学生,花时间重新发明轮子,赶在最后期限前,运行时和内存性能较差,通常在编写C风格的代码和/或编写应该调用标准算法的代码。

尽管你经常可以对你的基本数据结构进行特定于领域的专业化,但这几乎是不值得的。可读性的损失不值得性能的提高,坦率地说,我看到太多的学生希望通过这种方式购买性能,因为他们在其他地方确实存在概念差距,导致他们编写缓慢的代码。

作为一个业内人士:重新定义好代码的含义。可维护性往往比性能更重要。只要你在性能上处于正确的水平(哦),通常不值得花时间进行微观优化,除非你了解并证明了这一需求。