C++顺序或逆序启动

看看,这种情况:

(i){//i为0或1
        动作<0>a;;
    }
    动作<1>a;//相反

是不是觉得很难看,借助简单顺序/逆序启动来重构它:

<<>类 G,...I>
空 顺序启动(序列<I...>,整 i){
    (((i==I)&&(G<I>(),0)),...);
}//构也是函数.<<>类 G,整 N>空 顺序启动(整 i){
    顺序启动<G>(转序<N>(),i);
}

逆序也比较简单:

<<>类 G,...I>
空 逆序启动(序列<I...>,整 i){
    静 常式 整 N=型长...(I);
    (((i+I+1==N)&&(G<I>(),0)),...);
}//构也是函数.要加个1.不然0+1!=2
//不要求是静态函数.只是这里I第1个为0.<<>类 G,整 N>空 逆序启动(整 i){
    逆序启动<G>(转序<N>(),i);
}

现在,你可以用

    逆序启动<动作,2>(i);
    //或者:顺序启动<动作,2>(i);

来替换前面的一块代码了,是不是爽?

posted @ 2022-06-22 18:19  zjh6  阅读(30)  评论(0)    收藏  举报  来源