使用STL的真正好处是什么
What are the real benefits of using STL?
你们中有多少人在项目中广泛使用STL?
我从来没有使用过STL的东西,首先,我不是一个专业的程序员,只是在需要的时候为高性能计算应用程序编写一些程序/库的人,对我来说,我认为STL并不是特别有用:
1,它提供了一些功能,如排序、哈希表、二叉树,但实现通常不是很优化,性能也不好,我可以很容易地找到替代品或自己编写,性能更好,有时甚至更好。
2,它提供了一些容器,我可以很容易地自己写。
3,它使用了大量的C++结构/warppers/语法,我学习和掌握这些确实需要时间。
所以,当项目中有很多程序员需要一致的编程接口,而我不应该为我的应用程序费心时,我可以说STL只用于高生产率编程吗?
仅仅因为你在大学里学习了数据结构和算法课程,并不意味着你实际上应该实现这些东西。如果没有特定领域的知识,您很可能是错的,并且无法实现这些数据结构的更高效版本。它们是通用的算法和容器,让你的生活变得轻松。它们让你的生活变得轻松:
1) 正确-您不需要调试它们。
2) 快——它们的速度与一般情况下的速度差不多。
3) 可维护性——你和你的同龄人都能阅读并理解他们在做什么。在许多情况下,标准库的使用是自我记录的。为什么要重新发明轮子?
我教过数据结构和算法,我可以告诉你,那些成绩最高、编写最快解决方案、提前完成、编写更干净代码的学生,都很好地利用了STL。做得最差的学生,花时间重新发明轮子,赶在最后期限前,运行时和内存性能较差,通常在编写C风格的代码和/或编写应该调用标准算法的代码。
尽管你经常可以对你的基本数据结构进行特定于领域的专业化,但这几乎是不值得的。可读性的损失不值得性能的提高,坦率地说,我看到太多的学生希望通过这种方式购买性能,因为他们在其他地方确实存在概念差距,导致他们编写缓慢的代码。
作为一个业内人士:重新定义好代码的含义。可维护性往往比性能更重要。只要你在性能上处于正确的水平(哦),通常不值得花时间进行微观优化,除非你了解并证明了这一需求。
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- C++STL中set的'insert'函数的原理是什么?
- 在C 中,对Pair类STL的用途是什么,就像数据类型或容器一样
- 模板中的类型名 U = equal_to<T>是什么意思?STL<T> equal_to用法
- 使用STL的真正好处是什么
- 使用STL克隆的优点是什么
- 复制包含STL成员(如vector)的C++结构的最佳方法是什么
- C++ STL 堆栈中使用的基本数据结构是什么?
- STL 容器列表、deque、vector 等的基类是什么?
- CplusPlus STL 中的列表迭代器到底是什么
- 替换由谓词确定的 std::string 中的字符的最 stl-ish 方法是什么
- STL 中的迭代器类型是什么
- 使用c++stl迭代器而不是传统指针的正确方法是什么
- C++和STL都不包含多维数组的原因是什么
- STL和stdlib之间的关系是什么
- 在 valarray 上 "count" 的 STL 算法的返回类型是什么
- c++在我的类中包含STL容器的正确方法是什么
- "STL allocate memory internally"是什么意思?
- <CString> 使用 C++ / STL 将 std::vector 展平为multi_sz的推荐方法是什么
- 如果一个Android NDK应用程序加载了多个共享的c++ STL实现,它的行为是什么?