【发布时间】:2012-09-01 05:13:30
【问题描述】:
我正在学习数据结构和抽象数据类型,但我一直卡在一个不断出现的问题上。
我不明白计算机科学现在有 50 年的历史(或者更老,我不确切知道),以及数据结构、ADT 和算法如何成为这一切的基础部分,但仍然存在没有任何标准。
我的问题实际上非常具体:我正在尝试在 C++ 中实现深度优先搜索,其方式可以在任何本机(内置)数据类型上工作。我的问题是,我首先看哪里?我知道 STL 中的堆栈类可用于实现 DFS 算法,但 STL 是第一个看的地方吗?我应该从头开始实现 DFS,使用堆栈以及我对实现该算法的了解吗?还是专业程序员在需要进行此类搜索时是否有一个库?
请告知,这个问题并不像我希望的那样具体。
【问题讨论】:
-
不,你不需要任何库来做到这一点。很容易实现,我相信有很多例子。
-
@DarthVader "Swap" 更容易实现,并且有一个库函数。
-
对我来说,如果标准库(通常被错误地称为 STL)具有我需要的数据结构或算法,我会使用它。如果不是,那么我转向 Boost,如果它也不在 Boost 中,那么我开始进行更广泛的搜索(例如 Google 和 Wikipedia)。
-
@dsign 没有任何图形或树算法的库。没有一个 prog langs 这样做,因为有几种不同的方法可以做到这一点。你见过代表图形的 c# 或 java 库吗?我在军团工作,我们总是自己写。
-
@DarthVader 有很多库实现了图和树算法:例如 boost::graph。检查这个问题:stackoverflow.com/questions/205945/…。它们不是 STL 的一部分,因为需求似乎不够高。另外,至少 boost::graph 是丑陋的。