Я пытаюсь создать гистограмму вектора данных 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 в приведенном выше примере.Это какой-то короткий способ определить функцию?Это обычное использование такого рода определения или просто ограниченные похожие проблемы?
Будем благодарны за любые пояснения или ссылки на подобные проблемы / материалы для чтения.