马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
[table][tr][td]template T For(int from, int to, FAdd fAdd, FElem fElem)
{
assert(to >= from);
T sum = fElem(from);
for (int i = from + 1; i
再比如更复杂的,字符串之间以 "," 相连,例如我们要生成一个表示一个数组的字符串,
例如 to_str(x[0]) + "," + to_str(x[1]) + "," + ... + "," + to_str(x[n-1])
这个计算,用我们在本文开头定义的 For 函数可以写成:
str add(str a, str b) { return a + "," + b; }
For(0, n-1, add, [](int i){ return to_str(x<i>); })
// 或者:
For(0, n-1, [](str a, str b) { return a + "," + b; }, [](int i) { return to_str(x<i>); })
PS. 有时候考虑到性能,我们还可以有一种变种版本:
template T For(int from, int to, T sum0, F f)
{
if (to < from)
return sum0;
T sum = sum0;
for (int i = from; i |