看,这样代码:
元<型名 F,型名 G>
空 并坑2(F&&f,G&&g,坑&们,整 总){
整 j=0,m;
对(j;j<们.左;j++)f(j);m=们.右;
g(j,m);j=m;对(j;j<总;j++)f(j);
}//两边为f,中间为g,一个坑
上面代码,最重要问题是F,G
,只要是两个以上外部
函数,就可以改造成类
了.因为更好看,更直接,其中f,g
最好重新命个名
,就更易理解了.
元<类 T>构 单坑{
T 啊;整 总;
空 坑外(整 j,整 k){对(;j<k;j++)外项(j);}
空 动作(){
整 m=坑.左,n=坑.右;
坑外(0,m);坑内(m,n);坑外(n,总);
}//坑内有两种表示方法而已.
保护:
虚 空 外项(整 j){}
虚 空 坑内(整 i,整 j){}
公:
单坑(T&a,整 b):们(a),总(b){}
空 并(){动作();}//这才是接口.
};
改造成上面这个样儿,虽然多了很多行
.但更易理解了.我只需要实现外项/坑内
,然后就可以调用并()
了.凡是多个模板F
时,就搞成类
,这样更易理解.而且也不容易
出错.λ
形式,见多了,也不爽.
函数和类
其实是一样的玩意儿
.只是类
就是个大函数
,里面有许多小函数
要实现.
类就是大函数
,如果类太小了,就用函数(自由函数)
.尽量少用λ
.自由函数
最多一个λ
.只要多了,就搞成类,类里面的虚函数
,你想要多少就要多少.也方便.
总之,类就是个大函数
.