目录
基于范围的for循环
只要是有顺序访问迭代器的容器,都可以用基于范围的for循环。
for_each
for_each用于对一段数据执行相同的操作,使用方式是引用并原址操作
可以用lambda表达式
vector<int>v{ 1,2,3,4 };
for_each(v.begin(), v.end(), [](int&n) { n = n * n; });
Print(v);
输出
v = size = 4
1 4 9 16
也可以用普通函数
void square(int &n)
{
n = n * n;
}
vector<int>v{ 1,2,3,4 };
for_each(v.begin(), v.end(), square);
Print(v);
lambda表达式和square函数有没有返回值对于for_each都一样。
transform
transform也是对一段数据执行相同的操作,使用方式是把函数返回值写到任意地址,也可以写到原地址。
可以用lambda表达式
vector<int>v{ 1,2,3,4 };
transform(v.begin(), v.end(), v.begin(), [](int&n) { return n * n; });
Print(v);
输出
v = size = 4
1 4 9 16
也可以用普通函数
int square(int n)
{
return n * n;
}
vector<int>v{ 1,2,3,4 };
transform(v.begin(), v.end(), v.begin(), square);
Print(v);
另外一个例子:
vector<int>v{ 1,2,3,4 };
vector<char>v2(4);
transform(v.begin(), v.end(), v2.begin(), [](int&n) { return n+'a'; });
Print(v2);
输出
v2 = size = 4
b c d e