std::vector<int> ages {22, 19, 46, 75, 54, 19, 27, 66, 61, 33, 22, 19}; int min_age{18}; std::cout << "There are "<< (std::none_of(std::begin(ages), std::end(ages),[min_age](int age) { return age < min_age; }) ? "no": "some") << " people under " << min_age << std::endl;这个谓词是一个 lambda 表达式,用来将传入的 ages 容器中的元素和 min_age 的值作比较。用 none_of() 返回的布尔值来选择包含在输出信息中的是“no”还是“some”。当 ages 中没有元素小于 min_age 时,none_of() 算法会返回 true。在这种情况下,会选择“no”。当然,用 any_of() 也能产生同样的结果:
std::cout << "There are "<< (std::any_of(std::begin(ages), std::end(ages),[min_age] (int age) { return age < min_age;}) ? "some":"no") <<" people under " << min_age << std::endl;只有在有一个或多个元素小于 min_age 时,any_of() 算法才会返回 true。
int good_age{100}; std::cout << (std::all_of(std::begin(ages), std::end(ages),[good_age] (int age) { return age < good_age; }) ? "None": "Some") << " of the people are centenarians." << std::endl;这个 lambda 表达式会将 ages 中的元素和 good_age 的值作比较,good_age 的值为 100。所有的元素都小于 100,所以 all_of() 会返回 true,而且输出消息会正确报告没有记录的百岁老人。
std::vector<int> ages {22, 19, 46, 75, 54, 19, 27, 66, 61, 33, 22, 19}; int the_age{19}; std::cout << "There are "<< std::count(std::begin(ages),std::end(ages),the_age)<< " people aged "<< the_age << std::endl; int max_age{60}; std::cout << "There are "<< std::count_if(std::begin(ages), std::end(ages),[max_age](int age) { return age > max_age; }) << " people aged over " << max_age << std::endl;在第一条输出语句中使用 count() 算法来确定 ages 中等于 the_age 的元素个数,第二条输出语句使用 count_if() 来报告大于 max_age 的元素个数。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有