商丘整站优化,点餐小程序源码下载,好的网站设计网站,wordpress响应式修改文章目录 1.非类型模板参数的引入2.标准库和普通数组3.模板的特化 1.非类型模板参数的引入
//非类型模板参数 -- 常量
templateclass T, size_t N 10
class array
{
private:T _a[N];
};int main()
{arrayint a1;arrayint, 100 a2;arraydouble, … 文章目录 1.非类型模板参数的引入2.标准库和普通数组3.模板的特化 1.非类型模板参数的引入
//非类型模板参数 -- 常量
templateclass T, size_t N 10
class array
{
private:T _a[N];
};int main()
{arrayint a1;arrayint, 100 a2;arraydouble, 1000 a3;return 0;
}2.标准库和普通数组
int main()
{arrayint, 10 a1; int a2[10] { 0 };//a1[10]; 越界检查--operator()函数调用//a2[15] 0; 写会检查部分会检查读不检查return 0;
}
3.模板的特化
#define _CRT_SECURE_NO_WARNINGS
#include iostream
#include list
#include vector
#include algorithm
#include array
#include time.h
#include queue
#include stdbool.h
using namespace std;struct Date
{//构造函数Date(int year, int month, int day):_year(year), _month(month), _day(day){}//判断大于bool operator(const Date d) const{if ((_year d._year)|| (_year d._year _month d._month)|| (_year d._year _month d._month _day d._day)){return true;}else{return false;}}//判断小于bool operator(const Date d) const{if ((_year d._year)|| (_year d._year _month d._month)|| (_year d._year _month d._month _day d._day)){return true;}else{return false;}}//成员属性int _year;int _month;int _day;
};//函数模板及特殊化处理
templateclass T
bool Greater(T left, T right)
{return left right;
}
template
bool GreaterDate*(Date* left, Date* right)
{return *left *right;
}//类模板及特殊化处理
namespace apex
{templateclass Tstruct less{bool operator()(const T left, const T right) const{return left right;}};templatestruct lessDate*{bool operator()(Date* d1, Date* d2) const{return *d1 *d2;}};
}int main()
{//函数模板特殊化处理Date d1(2022, 7, 7);Date d2(2022, 7, 8);cout Greater(d1, d2) endl; Date* p1 d1;Date* p2 d2;cout Greater(p1, p2) endl; //类模板特殊化处理apex::lessDate ls1;cout ls1(d1, d2) endl;apex::lessDate* ls2;cout ls2(p1, p2) endl;//适配器模板的特化std::priority_queueDate, vectorDate, apex::lessDate dq1;std::priority_queueDate*, vectorDate*, apex::lessDate* dq2;dq2.push(new Date(2023, 8, 9));dq2.push(new Date(2023, 8, 10));dq2.push(new Date(2023, 8, 12));dq2.push(new Date(2023, 8, 13));return 0;
}