人们是否仍然编写自己的数据结构和算法?
而不是其他语言的STL和类似库?
作为一个新手,我应该深入研究软件开发的这一部分吗?广度优先还是深度优先?
现在只有概念上的理解是必要的吗?或者我应该能够蒙住眼睛实现双重链表吗?
而不是其他语言的STL和类似库?
作为一个新手,我应该深入研究软件开发的这一部分吗?广度优先还是深度优先?
现在只有概念上的理解是必要的吗?或者我应该能够蒙住眼睛实现双重链表吗?
虽然没有人真正滚动自己的堆栈或队列,但了解它们如何以及为什么不同是非常重要的。因此,不,要有效地使用简单的数据结构,在蒙上眼睛时,不必100%能够在链表中对循环/空尾/并发/等进行所有正确的错误检查。
但是,虽然最简单的数据结构不会一遍又一遍地重写,但树和图形通常仍然是自定义滚动的,如果不了解更基本的数据结构,您可能就无法对它们做任何事情。
此外,这些通常属于“面试问题”,因此即使您实际上没有在实时代码中重写双链表,也值得知道如何做。
仅仅因为很多语言/SDK等已经为你提供了这些东西,并不意味着仍然理解它们是如何工作的并不重要,理解算法的最好方法是自己编写它们。
特别是如果你发现自己在时间关键型代码上工作,那么你使用的所有东西的成本都很重要,除非你知道各种数据结构之间实现的差异,否则你可能会发现自己使用效率较低的选项。
为了回答主题行中的问题,是的 - 当速度/空间/平台受到限制时,很多人仍然编写自己的实现,他们需要确切地知道他们的功能中发生了什么。我知道在视频游戏行业,我们经常编写自己的快速且内存高效的容器类,这些类针对每个目标平台进行了优化。