簡體   English   中英

STL vs 算法

[英]STL vs Algorithms

我知道問這個問題很愚蠢。 我作為初學者提出問題,因為我正在學習 DsAlgo。

所以讓我們舉一個簡單地旋轉排序數組的例子。

我可以遵循兩種方法。 1.STL 2.不帶STL

我可以通過使用std::rotate來簡單地做到這一點,或者我可以使用雜耍算法。 兩種方法的 Big-O 復雜度都是 O(n)。

因此,如果我可以簡單地將代碼制作成兩行代碼,為什么我需要學習不同的算法?

我真的很困惑我應該用哪種方式 go 。

如果標准庫有可以讓你完成工作的算法,你應該使用它們! 以下是幾個原因:

  1. 它就在那里,你不必重寫它。
  2. 與您自己推出的產品相比,它經過了徹底的測試,並且不太可能出現問題。
  3. 它可能是由編寫編譯器的同一個人實現的,因此它可能已盡可能優化。 他們還有更多時間來優化該代碼。
  4. 對於以后必須閱讀您的代碼的任何人來說,它更加明確和易於理解。
  5. 當您切換到更新/更好的編譯器時,您的代碼可能會更快,而您無需任何工作。

當然,您可以使您的代碼 2 襯里。 應該是這樣的。 您應該使用標准庫,因為它們是以最好的方式編寫的,並考慮了很多因素。

現在,問題是,為什么要學習算法:

庫提供抽象實現。 你不知道幕后發生了什么。

一些庫是開源的,通過它們您可以學習如何編寫由編寫編譯器的人開發的代碼的最佳實踐。

現在,如果你想實現任何需要對時間和空間復雜度有特定限制的用例,你應該知道算法是什么,它是如何工作的,以及它是否適合用例。

通過學習算法,還可以針對特定用例的devise新算法,標准庫中沒有。 庫只是為基本算法提供解決方案,而不是所有東西。

通過學習算法,您可以開發自己的庫並將其公開,以便其他開發人員可以使用它來節省時間並構建健壯的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM