陣列類模板(上) 一種高效的使用

2022-06-21 06:18:11 字數 827 閱讀 9907

預備知識

模板引數可以是數值型引數(非型別引數)

template

void func()

func();

數值型模板引數的限制

-變數不能作為模板引數(變數是不能在編譯期就唯一確定的)

-浮點數不能作為模板引數(浮點數在計算機內部的表示是不精確的)

-類物件不能作為模板引數

........

本質:模板引數是在編譯階段被處理的單元,因此,在編譯階段必須準確無誤的唯一確定

#include #include 

using

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 #include 

using

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個位置 如果需要考慮程式移動資料的次數盡量少,要如何設計移動的方法?...