兩種宣告方式:
template template
#include templatevoid swap(t& t1, t& t2)
int main()
非型別的函式模板引數:
//這裡的value就是非型別的模板引數
template t add (const t& x )
格式:
template class 類名
非型別的類模板引數:
//注意:浮點型不能作為非型別的類模板引數
// 靜態順序表
//templatetemplate //帶預設模板引數
class vector
;template vector ::vector ()
: _size(0)
{}void test ()
#includeusing namespace std;
template class a
void f();
};template void a::f()
int main()
向量的宣告及初始化:
vectora ; //宣告乙個int型向量a
vectora(10) ; //宣告乙個初始大小為10的向量
vectora(10, 1) ; //宣告乙個初始大小為10且初始值都為1的向量
vectorb(a) ; //宣告並用向量a初始化向量b
vectorb(a.begin(), a.begin()+3) ; //將a向量中從第0個到第2個(共3個)作為向量b的初始值
int n = ;
vectora(n, n+5) ; //將陣列n的前5個元素作為向量a的初值
vectora(&n[1], &n[4]) ; //將n[1] - n[4]範圍內的元素作為向量a的初值
宣告乙個m*n大小的二維向量:
vector< vector> b(10, vector(5)); //建立乙個10*5的int型二維向量
迭代器操作:
vectorv1( 5, 789 );
vector::iterator it;
for( it = v1.begin(); it != v1.end(); it++ )
cout << *it << endl;
map的宣告與賦值:
#include #include #include using namespace std;
int main()
getchar();
}
array的初始化:
arrayarr1 = ; // arr1包含:1 2 3 4 5
arrayarr3}; // arr3包含:1 2 3 4 5
arrayarr2 = ; // arr2包含:0 0 0 0 0
vector:可變大小陣列。支援快速隨機訪問。在尾部之外的位置插入或刪除元素可能很慢;
array:固定大小陣列。支援快速隨機訪問。不能新增或刪除元素;
string:與vector相似的容器,但專門用於儲存字元。隨機訪問快。在尾部插入/刪除速度快。
C 中的模板
模板 template 利用一種完全通用的方法來設計函式或類而不必預先說明將被使用的每個物件的型別,利用模板功能可以構造相關的函式或類的系列,因此模板也可稱為引數化的型別。在c 語言中,模板可分為類模板 class template 和函式模板 function template 函式模板 通過前面...
C 中的模板
1 什麼是模板?模板是一種不關注輸入 輸出資料型別,只關注資料處理相關演算法實現的程式設計,也稱為泛程式設計。自定義模板是開放人員根據需要設計的模板,其模板的編碼工作由開發人員完成,而標準模板是使用系統自帶的標準模板庫 stl 其模板的實現 不需要自己完成,開放人員可以直接使用。2 模板定義有何規則...
C 中的模板
c 中的模板大致分兩類 函式模板和類模板。模板的框架都是在函式前或者類前寫上 template 模板的實質為 將資料型別當引數傳遞,實現資料型別與演算法相分離。函式模板 函式模板 模板函式 函式模板 其呼叫的方式有隱式呼叫,即由編譯器自己推導,和宣告型別如myswap a,b 函式模板的機制 當宣告...