这段代码可能有什么问题。 我正在尝试通过std :: vector实例化来调用countLessThan3。
// 3. Lambdas
template<typename T>
const auto countLessThan3(const T & vec, int value)
{
const auto count = std::count(vec.begin(), vec.end(),
[](int i){ return i < 3;}
);
return count;
}
int main(int argc, char const *argv[])
{
// 3
std::vector<int> vector = {1, 2, 3, 4, 5, 2, 2, 2};
countLessThan3<std::vector<int>>(vector, 3);
return 0;
}
在Linux上与g ++ -std = c ++ 14 1.cpp -o 1编译。
答案 0 :(得分:4)
还有一些问题:
std::count
,但是传递了lambda,因此应改为std::count_if
。value
作为参数传递给函数,但未使用,并且lambda中有硬编码的3
。其他小问题已在下面的代码段中解决
#include <iostream>
#include <vector>
#include <algorithm>
template<typename T>
auto countLessThan(const T & vec, typename T::value_type value)
{
return std::count_if(vec.begin(), vec.end(),
[value](typename T::value_type i){ return i < value;}
);
}
int main()
{
std::vector<int> vector = {1, 2, 3, 4, 5, 2, 2, 2};
std::cout << countLessThan(vector, 3) << '\n';
return 0;
}