c++ - find_if 找到一个不等于某物的元素

标签 c++ arrays algorithm iterator

#include<iostream>
#include<algorithm>

using namespace std;

int main()
{
    int  matrix[9] = { 1,0,0,0,1,0,0,0,5 };
    bool status = true;

    status = find_if(begin(matrix), end(matrix), [](auto const &value) ->bool
    { if (value != 0 && value != 1) return false; else return true; });

        cout << status << endl;

}

我遇到这样一种情况,我需要查找数组中是否存在不等于 10 的值。我想到了使用 find_if。但我无法让它发挥作用。

此代码始终返回 true。我该如何做对?如果数组中至少有一个元素是非 1 和 0,则最终状态应为 false

find_if 方法是否正确?

最佳答案

std::find_if返回一个迭代器,而不是一个 bool。在您的情况下,迭代器是一个指针,它永远不应为空,因此将始终隐式转换为 true

您正在寻找 std::any_of .

关于c++ - find_if 找到一个不等于某物的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40722308/

相关文章:

c++ - C预处理器直接扩展

c++ - 我是否需要在 Maya 2017 中定义 OpenGL 上下文?

PHP未设置嵌套数组的部分

c - 随机播放,然后查找并替换二维数组中的重复项 - 无需排序

python - 如何检查列表的元素是否连续

algorithm - 获取数字周围的数字

c++ - Qt 在从 SQLite 内存数据库中选择时进行浅拷贝

c++ - 将所有常量定义为 const 引用?

基于数组的 PHP 路由,如何将 * 匹配到任何东西

javascript - 为什么 ko.observableArray.length 不返回底层数组的长度?