一元谓词函数定义

时间:2018-12-18 03:44:55

标签: c++ c++11

我正在尝试创建数据向量std::vector<int> data的直方图,其元素是从0到255的整数。我在使用std::count_if的示例代码中看到如下:

int bins = 5; //number of intervals
std::vector<int> histogram(bins);
double interval = 255.0/bins; // interval length
for(int i=0; i< bins; i++){
    histogram.emplace_back(std::count_if(data.begin(),data.end(),
[i, interval](int j){return (j < ((double) i + 1) * interval && j >= (double) i * interval);}));
} 

我对std::count_if函数的最后一个参数感到困惑。它应该是UnaryPredicate函数。我对代码试图做什么有一个大概的了解,但是我不理解上面示例中定义UnaryPredicate函数的方式。这是定义功能的捷径吗?使用这种定义是常见的还是仅限制了类似的问题?

任何类似的问题/阅读材料的解释或链接,将不胜感激。

1 个答案:

答案 0 :(得分:0)

This其他堆栈溢出问题具有您要寻找的答案。

TL; DR:[]()语法定义了一个lambda function,用于实现“ UnaryPredicate”的目的,而std::count_if documentation只需实现{{1 }}的第一个参数的值类型,其返回值可转换为operator()