既然c++模板元編程是圖靈完全的,那麼刷leetcode的時候如果都用模板元編程,能不能全刷成0ms?
01-03
腦洞大開,請見諒
不行,因為輸入不是常數
事先知道測試用例才行。
對一些問題應該是可以的,例如對於判斷素數的問題,可以提前把素數表算出來。不過如果素數表很大的話,編譯的時候會卡死的,而且要人肉把簡單的遞歸轉成像二叉樹那樣的遞歸來繞過模板999遞歸深度的限制。
1. 輸入是運行時變數。2. 代碼有長度限制。3. 很多online judge都有能力檢測並且拒絕查表法、公式法、元編程。
最後要說的是,自己試一試不就知道了。
改比編譯時間?C++得跪啊……
template其實某種意義上是一個code generator,不在編譯前給定常量是無法generate出code的,也就無法通過編譯了。
推薦閱讀:
※如何使用C++實現一個and函數?
※如何在 C++ 代碼中提示編譯器某個分支的執行概率高?
※C++定義一個函數,返回值為一個對象,如何想辦法返回一個邏輯上的空值?
※C++ 函數如何返回多值?
※程序員有哪些借口可以讓自己寫的代碼里到處都是Bug並且代碼可讀性很低?