c++λ用静与不用静
改正前:
空 行处理(串&行){//加一个列表.
静 动 f=[&]<类 T>(T&t){
如(p->要要(行))t.要处理(行);
异 t.不要(行);
};//不能用静.
多.选一(f,n);
}
看见没有,如果这里f为静,则你每次处理的行,都是第1行,这是不变的.
改正后如下:
空 行处理(串&行){//加一个列表.
静 动 f=[&]<类 T>(T&t,串&a){
如(p->要要(a))t.要处理(a);
异 t.不要(a);
};//不能用静.
多.选一(f,n,行);//扩展一下参数.
}//概念要求,要实验.
当然,也可直接去掉f的静,不过可能就会降低速度.
但我们像上面那样改.把行加在参数里面,这样其它地方不改,仍然是静.这次就成功运行了.
这里p是不变的.
因而,只要你的λ里面都是不变的,则你的λ可以为静.如果有变化的,可以加在参数里来改.
否则,不能随便用静.静代表只初化一次,千万要小心!
浙公网安备 33010602011771号