

对仿函数可以这样理解,定义一个代替大于号的类与都=代替小于号的类,在用到的类的模板部分增加一个参数用来储存仿函数的类,当需要用到仿函数的时候,定义一个模板变量com,用com实现的函数起大于号的作用来代替大于号,这样就完成了仿函数的使用,当算法需要使用小于号时,将类名greater换成less就完成了算法中小于号的替换。STL库中的sort快排函数时就有多传一个参数来决定是排升序还是排降序的效果,这个也是仿函数的效果。
非类型模板参数:在使用模板时不仅可以在参数部分写类型名也可以写非类型,不过这个非类型一般为常量无法改变,这个再类Array中用到过:

这行代码运行结果就会一次生成两个空间大小不同的数组;
模板的特化:
顾名思义,特化就是指特殊情况特殊处理,比如定义一个判断两数相等的模板函数,但是这个函数只能判断自然数,若传参是字符串的话就不能达到判断的效果,于是可以特殊加一个同名的模板函数来处理这种特殊情况:

这样就可以用IsEqual这个函数同时处理自然数和字符串了,同时自定义类型也可以特殊处理