/* * Transform * */ template<class In, class Out, class Op> Out transform(In first, In last, Out res, Op op) { while (first != last) *res++ = op(*first++); return res; } template<class In, class In2, class Out, class BinOp> Out transform(In first, In last, In2 first2, Out res, BinOp op) { while (first != last) *res++ = op(*first++,*first2++); return res; }