c++一些语法模板
2023-09-27 14:27:03 时间
函数模板特
template <class T> int compare(T v1,T v2) { if(v1<v2) return -1; else if(v1>v2) return 1; else return 0; } template <> int compare<char *>(char * s1,char * s2) { return strcmp(s1,s2); }
类模板的特化
template <class T> class test { public: void operator()() { cout<<"test<T>"<<endl; } }; template <> class test<char> { public: void operator()() { cout<<"test<char>"<<endl; } };模板的偏特化
template <class T,class O> struct testClass { testClass(){cout<<"I,O"<<endl;} }; template <class T> struct testClass<T *,T *> { testClass(){cout<<"T*,T*"<<endl;} };成员模板
template <class T> class v { public: template <class T1> void insert(int position ,T1 t) { cout<<"insertion"<<endl; } };
依据前面一个模板确定当前的模板參数
template <class T,class S=vector<T> > class test { public: test(){cout<<"test"<<endl;} private: S t; }
模板与友元的绑定
template <class T> class Queue { friend bool operator == <T> (const Queue <T> &t1,const Queue <T> &t2) { cout<<"T,T"<<endl; return true; } };
内联函数模板
inline template <typename T> T min(const T& a,const T & b) { return a<b?a:b; }注意inline 和template的位置不能互换
模板内部指定类型
template <class T> class test { public: typename T::size_type t; //模板内部定义类型 };
非类型模板形參
template <class T,size_t N> void arr(T (¶)[N]) { int i=0; for(i=0;i<N;i++) cout<<para[i]<<endl; };
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- 真不戳,基于C++泛型编程的职工管理系统
- C++类型转换运算符 static_cast,dynamic_cast,reinterpret_cast,const_cast
- C++-头文件书写规范(二):头文件中的保护措施【#ifndef #define...#endif 】【防止多个源文件同时包含同一个头文件时产生的声明冲突】【头文件中最好只放声明,不放其定义】
- iBinary C++STL模板库关联容器之map/multimap
- C++——overloading
- 【C++】模板总结
- python 调用 C++ code
- 传智播客 C/C++学习笔记 字符串替换
- C++函数模板template(模板函数)
- 《挑战30天C++入门极限》新手入门:C++中的函数重载
- C++入门学习——标准模板库之vector
- 【足迹C++primer】38、关联容器操作(2)
- C++多线程同步之临界区(CriticalSection)
- 7z系列之一:7zip SDK中C++模块的编译
- C++ Builder string相互转换(转)
- C++11 可变模板参数
- C++模板编程之变长参数模板
- C++ 模板
- 【温故而知新】C和C++3:模板
- Learning C++ No.14【STL No.4】