你们有多少人在项目中广泛使用STL?
我从来没有使用STL的东西,其中一个,我不是专业的程序员,只是在需要时为高性能计算应用程序编写一些程序/库的人,对我来说,我认为STL并不是特别有用:
1,它提供了一些功能,如排序,哈希表,二叉树,但实现通常不是很好,在性能方面也不好,我可以很容易地找到替换或自己写,性能更好,有时候,好多了。
2,它提供了一些我自己可以轻松编写的容器。
3,它使用了大量的C ++结构/ warppers / grammars,这对我来说是非常省时的学习和掌握它。
所以我可以说STL只适用于高效编程,因为项目中有很多程序员需要一致的编程接口,我不应该为我的应用程序烦恼吗?
答案 0 :(得分:8)
仅仅因为你在大学里学过数据结构和算法课程并不意味着你应该真正实现这些东西。如果没有特定领域的知识,您很可能会出错,并且无法实现这些数据结构的更高效版本。它们是通用算法和容器,让您的生活更轻松。他们通过以下方式让您的生活轻松:
1)正确 - 你不需要调试它们。
2)速度快 - 它们与一般情况一样快。
3)可维护 - 您和您的同事都可以阅读并理解他们正在做的事情。在许多情况下,标准库的使用是自我记录的。为什么重新发明轮子?
我教过数据结构和算法,我可以告诉你,获得最高分的学生,编写最快的解决方案,提前完成,编写更清晰的代码,都可以充分利用STL。做得最差的学生,花时间重新发明轮子,推动截止日期,运行时间和内存性能不佳,通常在编写C风格的代码和/或编写代码时应该调用标准算法。
即使您经常可以对基础数据结构进行特定于域的特化,但它几乎不值得。可读性的损失不值得获得性能,坦率地说,我看到有太多的学生想要以这种方式购买性能,因为他们在其他地方确实存在导致他们编写慢代码的概念差距。
作为一个从事工业的人:重新定义好的代码意味着什么。可维护性通常是比性能更重要的因素。只要你在性能方面处于合适的位置(大哦),除非你描述和证明需要,否则通常不值得你进行微量优化。