首页 > 编程语言 >c++11: all_of 、 any_of 和 none_of

c++11: all_of 、 any_of 和 none_of

时间:2023-05-30 11:33:43浏览次数:42  
标签:11 none return int 元素 arr ans 序列 any

  1. 有效的字母异位词
class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.size()!=t.size())
            return false;
        int ans[26]={0};
        for(auto& ch:s){
            ++ans[ch-'a'];
        }
        for(auto& ch:t){
            --ans[ch-'a'];
        }
        return all_of(ans,ans+26,[](int i){return i==0;});
    }
};

C++11 中提供了一些用于检查序列中元素的算法,包括:

  • all_of: 检查序列中是否所有元素都满足某个条件。

  • any_of: 检查序列中是否存在至少一个元素满足某个条件。

  • none_of: 检查序列中是否不存在任何一个元素满足某个条件。
    这些算法的使用方式如下:

    #include <algorithm>
    #include <array>
    
    int main() {
        std::array<int, 5> arr {1, 2, 3, 4, 5};
    
        // 检查数组中是否所有元素都大于0
        bool all_greater_than_zero = std::all_of(arr.begin(), arr.end(), [](int i) {return i > 0;}); 
        // true
        
        // 检查数组中是否存在大于3的元素
        bool any_greater_than_three = std::any_of(arr.begin(), arr.end(), [](int i) {return i > 3;});
        // true
        
        // 检查数组中是否不存在大于10的元素
        bool none_greater_than_ten = std::none_of(arr.begin(), arr.end(), [](int i) {return i > 10;});
        // true
    
    }
    

    这些算法使用,只需要传入序列的首尾迭代器和一个用于检查条件的函数对象(上例使用了lambda表达式)。然后算法会对整个序列中的每个元素调用该函数对象,并根据返回值判断序列是否满足条件。
    这些算法对检查序列中元素很有用,可以使代码更加简洁明了。

标签:11,none,return,int,元素,arr,ans,序列,any
From: https://www.cnblogs.com/bo-shi/p/17442765.html

相关文章

  • 代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111
     第六章二叉树part03 今日内容:  ●  104.二叉树的最大深度  559.n叉树的最大深度●  111.二叉树的最小深度●  222.完全二叉树的节点个数 迭代法,大家可以直接过,二刷有精力的时候 再去掌握迭代法。  详细布置   104.二叉树的最大深度 (优先掌......
  • 代码随想录算法训练营第17天 | ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404
     第六章二叉树part04 今日内容:  ●  110.平衡二叉树 ●  257. 二叉树的所有路径 ●  404.左叶子之和   详细布置  迭代法,大家可以直接过,二刷有精力的时候 再去掌握迭代法。  110.平衡二叉树 (优先掌握递归) 再一次涉及到,什么是高度,什么是......
  • [USACO11OPEN]Corn Maze S
    [USACO11OPEN]CornMazeS题面翻译奶牛们去一个\(N\timesM\)玉米迷宫,\(2\leqN\leq300,2\leqM\leq300\)。迷宫里有一些传送装置,可以将奶牛从一点到另一点进行瞬间转移。这些装置可以双向使用。如果一头奶牛处在这个装置的起点或者终点,这头奶牛就必须使用这个装置。......
  • poj 1190(剪枝)
    生日蛋糕TimeLimit: 1000MS MemoryLimit: 10000KTotalSubmissions: 16191 Accepted: 5751Description7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri,高度为Hi的圆......
  • 「解题报告」[ARC114E] Paper Cutting 2
    Kaguya随机点了一道题,结果还挺educational,写一下。不过好像挺套路的。首先第一件事,发现从现有的线段里选一个隔开这个东西太丑了。我们考虑转化一下题意。我们仍然在原矩形上划线,但是划完线后并不割开,而是一直在原矩形上操作。可以发现,这个操作是和原来的操作是等价的,因为我们......
  • Windows 11 截屏快捷键被占用
    Windows11系统截屏快捷键被占用后如何进行撤销。在更新系统后,发现Windows11的系统快捷键被占用了,导致其他软件无法使用这个快捷键。我们需要做的是取消选择上面那个选项。  在完成上面的设置后,重启计算机就可以让你的计算机把占用的截屏快捷键释放了。https://www.o......
  • Windows 11 截屏快捷键被占用
    Windows11系统截屏快捷键被占用后如何进行撤销。在更新系统后,发现Windows11的系统快捷键被占用了,导致其他软件无法使用这个快捷键。我们需要做的是取消选择上面那个选项。  在完成上面的设置后,重启计算机就可以让你的计算机把占用的截屏快捷键释放了。......
  • 「Ynoi2011」成都七中
    「Ynoi2011」成都七中题意:询问\(([l,r],x)\),表示将树中编号在\([l,r]\)内的所有节点保留,求\(x\)所在连通块中颜色种类数可以转化为从\(x\)出发且只经过节点范围在\([l,r]\)的路径上的颜色种类数,是路径问题且多次询问,所以可以考虑点分树但是可以发现,一个节点的答案可......
  • poj 1195(二维树状数组)
    解题思路:这是一道很裸的二维树状数组AC:#include<stdio.h>#include<string.h>#defineN1100intc[N][N],n,arr[N][N];intlowbit(intx){returnx&(-x);}voidupdate(intx,inty,intnum){inti,j;for(i=x;i<=n;i+=lowbit(i))for(j=y;......
  • hdu 1511(dp)
    解题思路:两次dp确实很巧妙,我只想到了一次dp算出最后那个数最小,其实题目要求还要保证第一个数尽可能大,一开始也没有注意到。。AC:#include<stdio.h>#include<string.h>#include<algorithm>#include<iostream>#include<math.h>#include<stdlib.h>#include<time.h>usingnamesp......