学习C++模板,初体验
2014-12-29 09:36
127 查看
最近,看了很多码神级人物的代码,发现其代码很炫酷,尤其对模板的使用,作为小码农,感觉已经落伍了,所以应该发奋图强,好好学习和掌握模板这个东西。
模板是什么呢?有人说一个模板就是一个创建类或函数的蓝图或者公式,什么意思呢?就是说模板是创建类或者函数的母体或生成器,你给一些参数,模板就能够创建出一个类或者函数。
那么模板怎么定义呢?模板定义以关键字template开始,后跟一个模板参数列表,这是一个逗号分隔的一个或者多个模板参数,用<>包围起来。for example:
模板参数表示在类或者函数定义中用到的类型或值。类似函数实参和形参的概念,当使用模板时,我们指定模板实参,将其绑定到模板参数上。那么模板实参怎么来呢?当我们调用一个函数模板时,编译器用函数实参推断模板实参。当编译器实例化一个模板时,它使用实际的模板实参代替对应的模板参数,来创建出模板的一个新实例。举个例子:
模板是什么呢?有人说一个模板就是一个创建类或函数的蓝图或者公式,什么意思呢?就是说模板是创建类或者函数的母体或生成器,你给一些参数,模板就能够创建出一个类或者函数。
那么模板怎么定义呢?模板定义以关键字template开始,后跟一个模板参数列表,这是一个逗号分隔的一个或者多个模板参数,用<>包围起来。for example:
template <typrname T> int compare(const T &v1, const T &v2) { if (v1 < v2) return -1; if (v1 > v2) return 1; return 0; }
模板参数表示在类或者函数定义中用到的类型或值。类似函数实参和形参的概念,当使用模板时,我们指定模板实参,将其绑定到模板参数上。那么模板实参怎么来呢?当我们调用一个函数模板时,编译器用函数实参推断模板实参。当编译器实例化一个模板时,它使用实际的模板实参代替对应的模板参数,来创建出模板的一个新实例。举个例子:
// template_try.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" #include "vector" using namespace std; template <typename T> int compare(const T &v1, const T &v2) { if (v1 < v2) return -1; if (v1 > v2) return 1; return 0; } int _tmain(int argc, _TCHAR* argv[]) { cout << compare(1, 0) << endl; vector<int> vec1,vec2; for(vector<int>::size_type ix = 0; ix !=3; ix++) { vec1.push_back(ix+1); vec2.push_back(ix+4); } cout << compare(vec1, vec2) <<endl; return 0; }运行结果:
相关文章推荐
- 学习C++模板,初体验
- C/C++学习----第五章 模板
- C++学习摘要之八:模板
- 金庸小说考试之模板方法模式学习笔记[C++版]
- C++学习----类模板
- c++学习---函数模板
- c++入门学习(函数模板)
- C++菜鸟学习笔记——模板与泛型编程
- C++模板学习
- C++学习摘要之八:模板
- C++ 学习之模板
- C++模板的学习.
- [C++再学习系列] 函数模板和类模板
- C++ 函数模板和排序的函数模板——学习笔记
- C++模板学习--kankan
- C/C++学习----第五章 模板
- C++ 学习练手 - 双向链表的模板实现
- 金庸小说考试之模板方法模式学习笔记[C++版]
- 学习C++---模板
- C++模板学习