gpt4 book ai didi

count_if 算法中的 C++ 编译器错误

转载 作者:太空狗 更新时间:2023-10-29 23:32:50 25 4
gpt4 key购买 nike

我正在运行一个简单的 STL 算法来计算小于 50 的元素的数量。该程序生成错误“调用的对象类型‘int’不是函数或函数指针”。我整晚都在解决这个问题,并在没有成功的情况下寻找关于 stackoverflow 的类似问题,但此时我无处可去。如果有人能指出我的错误,我将不胜感激。

#include <iostream>
#include <numeric>
#include <functional>
#include <algorithm>
#include <vector>
#include <cstdlib>

using namespace std;

bool lessThan(double x) //global function
{
return (x < 50);
}

int main()
{
vector<double> v1(5); //create vector of 5 doubles
for (auto i : v1) { //for each element in v1...(auto used to determine type)
v1[i] = rand() % 100; //generate random numbers
cout << v1[i] << endl;
count_if(v1.begin(), v1.end(), lessThan(v1[i]));
}

return 0;
}

最佳答案

您有两个问题:第一个错误是因为您调用了函数,但您应该只提供指向该函数的指针。

第二个问题更难诊断,但它是 range-for statement为您提供容器的 而不是索引。这意味着 i 将是一个 double 值,您将获得其中五个值,每个值都是 0.0

为了解决最后一个问题,我建议你改为这样做

for (auto& v : v1)
{
v = some_value;
}

std::cout << "Number of items whose value is less than 50: "
<< std::count_if(std::begin(v1), std::end(v1), lessThan)
<< '\n';

关于count_if 算法中的 C++ 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28714533/

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