Использование C++ 11, вы можете использовать std::function
, таким образом (что довольно быстро написать ИМО)
void call_fun_with(std::function<void(int)> fun, std::vector<int>& args){
for(int& arg : args){
fun(arg);
}
}
или немного более общий характер:
template<typename FTYPE>
void call_fun_with(FTYPE fun, std::vector<int>& args){
for(int& arg : args){
fun(arg);
}
}
Live example
Live example, templated version
Примечание: std::function
аргументы шаблона должны быть определены следующим образом: return_type(arg1_type, arg2_type,etc.)
EDIT: A lternative может использовать std::for_each
, что фактически делает практически то же самое, но мне не очень нравится семантика, которая больше похожа на «для всего, что в этом контейнере, сделайте ...». Но это только я и мой (возможно, глупый) способ кодирования :)
Вы мог бы легко написать это самостоятельно, используя указатель на функцию или функтор для первого параметра. – benjymous
Введите ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector) и используйте [' std :: for_each'] (http://en.cppreference.com/ж/CPP/алгоритм/for_each)? –
Это вариант, но мне интересно, есть ли какая-то особенность на C++ для работы с этим –