1、auto代替传统for循环
新定义的for循环
vector<int> v = {1,3,1,7,5}; // vector容器
int num = 0;
for(auto x : v) { // 手写for循环
if (x == 1) num++; // 判断条件,然后统计
}
2、函数代替传统for循环
count()函数
vector<int> v = {1,3,1,7,5}; // vector容器
auto num = std::count( // count算法计算元素的数量
begin(v), end(v), 1 // begin()、end()获取容器的范围
);
count_if()函数
auto n = std::count_if( // count_if算法计算元素的数量
begin(v), end(v), // begin()、end()获取容器的范围
[](auto x) { // 定义一个lambda表达式
return x == 1; // 判断条件
}
);
3、for_each代替传统for循环
最基本的算法 for_each,它是手写 for 循环的真正替代品
分功能写
vector<int> v = {3,5,1,7,10}; // vector容器
auto print = [](const auto& x) // 定义一个lambda表达式
{
cout << x << ",";
};
for_each(cbegin(v), cend(v), print);// for_each算法
直接写
for_each( // for_each算法,内部定义lambda表达式
cbegin(v), cend(v), // 获取常量迭代器
[](const auto& x) // 匿名lambda表达式
{
cout << x << ",";
}
);