以下内容仍在更新完善...
函数模版
代码示例:用于比较两个数大小的函数模版
template <typename T> int compare(const T &v1, const T &v2) { if( v1 < v2 ) return -1; if( v1 > v2 ) return 1; return 0 ; }
模版的定义从模版关键字template开始,后跟一个模版参数列表。
模版参数列表是一个用逗号分隔的一个或多个模版参数的列表,用<>包围。
模版参数列表类似于函数参数列表,模版参数表示在类或函数定义中用到的类型或值。
类模版
代码示例:
template <typename T> class A{ public: typedef T value_type; //构造函数 A(); A(std::initializer_list<t> il); void push_back(const T &t) { data->push_back(t) ;} void push_back(T &&t) { data->push_back( std::move(t) ); } void pop_back(); ...... private: std::shared_ptr<std::vector<t>> data; ...... }
当要用A模版定义一个类型时,必须提供元素类型:
A<int> x; //空的A<int> A<int> y = {0,1,2,3,4}; //含有5个元素的A<int>