#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;
}
我遇到这样一种情况,我需要查找数组中是否存在不等于 1
和 0
的值。我想到了使用 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/