既然c++模板元編程是圖靈完全的,那麼刷leetcode的時候如果都用模板元編程,能不能全刷成0ms?

腦洞大開,請見諒


不行,因為輸入不是常數


事先知道測試用例才行。


對一些問題應該是可以的,例如對於判斷素數的問題,可以提前把素數表算出來。不過如果素數表很大的話,編譯的時候會卡死的,而且要人肉把簡單的遞歸轉成像二叉樹那樣的遞歸來繞過模板999遞歸深度的限制。


1. 輸入是運行時變數。

2. 代碼有長度限制。

3. 很多online judge都有能力檢測並且拒絕查表法、公式法、元編程。

最後要說的是,自己試一試不就知道了。


改比編譯時間?C++得跪啊……


template其實某種意義上是一個code generator,不在編譯前給定常量是無法generate出code的,也就無法通過編譯了。


推薦閱讀:

如何使用C++實現一個and函數?
如何在 C++ 代碼中提示編譯器某個分支的執行概率高?
C++定義一個函數,返回值為一個對象,如何想辦法返回一個邏輯上的空值?
C++ 函數如何返回多值?
程序員有哪些借口可以讓自己寫的代碼里到處都是Bug並且代碼可讀性很低?

TAG:編程語言 | 編程 | C |