STL 与算法

Aja*_*mar 0 c++ algorithm stl c++14

我知道问这个问题很愚蠢。我在学习 DsAlgo 时作为初学者提出问题。

因此,让我们举一个简单旋转已排序数组的示例。

我可以遵循两种方法。1.STL 2.无STL

我可以简单地通过使用std::rotate或我可以使用杂耍算法来做到这一点。两种方法的 Big-O 复杂度都是 O(n)。

因此,如果我可以简单地将代码制作成两行,为什么我需要学习不同的算法?

我真的很困惑我应该走哪条路。

Ayx*_*xan 6

如果标准库有完成你工作的算法,你应该使用它们!以下是几个原因:

  1. 它就在那里,您不必重写它。
  2. 它经过彻底测试,比您自己推出的东西出问题的可能性要小得多。
  3. 它很可能是由编写编译器的同一个人实现的,因此它可能已尽可能优化。他们还有更多时间来优化该代码。
  4. 对于以后必须阅读您的代码的任何人来说,它都更加明确和易于理解。
  5. 当您切换到更新/更好的编译器时,您的代码可能会更快,而无需您进行任何工作。