gpt4 book ai didi

c++ - `std::count_if` 的二进制谓词不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:33 25 4
gpt4 key购买 nike

我目前正在尝试使用 lambda 函数来 std::count_if 数组中两个连续元素的总和等于一个数字。下面给出了示例代码。

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
const int Number = 3;
std::vector<int> vec = {1,1,2,4,5,6};

auto count = std::count_if( vec.begin(), vec.end(),
[&](int A, int B) -> bool
{ return A+B == Number; });

std::cout << count << '\n';
}

输出应该是1,因为我们有一种可能的情况(1 + 2)。

然而,我无法成功。谁能告诉我我想念什么?这是错误信息:

|234|error: no match for call to '(main()::<lambda(int, int)>) (int&)'|

最佳答案

问题是std::count_if使用一元谓词。编译器告诉您的内容:“您给了我一个带有 2 个参数的 lambda,我期望的是带有一个参数的 lambda”。

我相信你要找的是std::adjacent_find .它比较容器的每两个相邻元素(可能使用二元谓词)。

关于c++ - `std::count_if` 的二进制谓词不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49702126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com