c++11: all_of 、 any_of 和 none_of

打印 上一主题 下一主题

主题 915|帖子 915|积分 2745


  • 有效的字母异位词
  1. class Solution {
  2. public:
  3.     bool isAnagram(string s, string t) {
  4.         if(s.size()!=t.size())
  5.             return false;
  6.         int ans[26]={0};
  7.         for(auto& ch:s){
  8.             ++ans[ch-'a'];
  9.         }
  10.         for(auto& ch:t){
  11.             --ans[ch-'a'];
  12.         }
  13.         return all_of(ans,ans+26,[](int i){return i==0;});
  14.     }
  15. };
复制代码
C++11 中提供了一些用于检查序列中元素的算法,包括:

  • all_of: 检查序列中是否所有元素都满足某个条件。
  • any_of: 检查序列中是否存在至少一个元素满足某个条件。
  • none_of: 检查序列中是否不存在任何一个元素满足某个条件。
    这些算法的使用方式如下:
    1. #include <algorithm>
    2. #include <array>
    3. int main() {
    4.     std::array<int, 5> arr {1, 2, 3, 4, 5};
    5.     // 检查数组中是否所有元素都大于0
    6.     bool all_greater_than_zero = std::all_of(arr.begin(), arr.end(), [](int i) {return i > 0;});
    7.     // true
    8.    
    9.     // 检查数组中是否存在大于3的元素
    10.     bool any_greater_than_three = std::any_of(arr.begin(), arr.end(), [](int i) {return i > 3;});
    11.     // true
    12.    
    13.     // 检查数组中是否不存在大于10的元素
    14.     bool none_greater_than_ten = std::none_of(arr.begin(), arr.end(), [](int i) {return i > 10;});
    15.     // true
    16. }
    复制代码
    这些算法使用,只需要传入序列的首尾迭代器和一个用于检查条件的函数对象(上例使用了lambda表达式)。然后算法会对整个序列中的每个元素调用该函数对象,并根据返回值判断序列是否满足条件。
    这些算法对检查序列中元素很有用,可以使代码更加简洁明了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表