預備知識
模板引數可以是數值型引數(非型別引數)
template
void func()
func();
數值型模板引數的限制
-變數不能作為模板引數(變數是不能在編譯期就唯一確定的)
-浮點數不能作為模板引數(浮點數在計算機內部的表示是不精確的)
-類物件不能作為模板引數
........
本質:模板引數是在編譯階段被處理的單元,因此,在編譯階段必須準確無誤的唯一確定
#include #includeusing
namespace
std;
template
////
將此處的int 修改為double編譯出錯,因為double不能作為數值型引數的型別
int n>
void
func()
;
for(int i=0; i)
for(int i=0; i)
}int
main()
有趣的面試題
用你覺得最高效的方法求1+2+3+...+n的值
數值型模板引數程式設計實驗
#include #includeusing
namespace
std;
template
class
sum;
//做乙個特化
template
< >
class sum<1>;
intmain()
C 使用模板進行的一種重構
如果有一些遺留 裡面有很多結構,定義了一些相同的成員,但在一些時候,需要取出這些成員,進行同樣的處理。如下面這些 的紅色部分。原先的程式結構是使用型別碼來區分實際的型別,客觀地說,這些遺留 是比較混亂的。不想說太多,用簡單的 來說明問題吧。typedef struct evt switch publ...
模板類 型別也是一種資料
template class base class class type class ctypedptrarray public base class ctypedptrarray型別化指標陣列類的模板類決定其要派生的父類 type類則是其元素的型別 常見的模板引數用法 class cobarray...
陣列右移的一種較為高效的解決方法
乙個陣列a中存有n 0 個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移m 0 個位置,即將a中的資料由 a0a 1 a n 1 變換為 a n m a n 1 a 0 a 1 a n m 1 最後m個數迴圈移至最前面的m個位置 如果需要考慮程式移動資料的次數盡量少,要如何設計移動的方法?...