Относно Function pointer
По-долу показания код ми е даден като пример за приложението на function pointer.
#include <iostream>
#include <vector>
void print(const std::vector<int> &v) {
for (const int item : v) {
std::cout << item << " ";
}
std::cout << "\n";
}
std::vector<int> filter(const std::vector<int> &numbers,
bool (*souldFilter)(int)) {
std::vector<int> filtered;
for (const int currNumber : numbers) {
if (souldFilter(currNumber)) {
filtered.push_back(currNumber);
}
}
return filtered;
}
bool isBiggerThan3(int number) {
return number > 3;
}
int main() {
const std::vector<int> initialVct{1, 2, -78, 3, 4, -505, 5, 6, 7};
std::vector<int> vec = filter(initialVct, isBiggerThan3);
print(vec);
return 0;
}
И той си работи. Ако заменя bool (*shouldFilter)(int) с bool shouldFilter(int). кода продължава да работи, гъвкавата функционалност се запазва а бързодействието не се влошава (тествах го с 10000 числа).
Та въпроса е, какъв е смисъла да се ползва function pointer вместо обикновен булев параметър?