2013-03-29 2 views
3

Возможно ли передать определение функции в качестве аргумента, и если да, то для чего это синтаксис? Если это не так, какова будет причина? Я хотел бы сделать что-то вроде:C++: объявить функцию внутри вызова функции

double arr1[10], arr2[10]; 

std::equal(arr1, &(arr1[5]), arr2, (bool(*)(double a, double b){return a == -b;}); 

ответ

5

Вы можете использовать лямбды для этого:

std::equal(arr1, arr1 + 5, arr2, [](double a, double b) { return a == -b; }); 
+1

Я думаю, вы должны упомянуть, это функция С ++ 11. – Shoe

+1

@Jueecy: Я думаю, что OP должен упомянуть, хочет ли она решение для более старой версии языка :-) –

+0

Это круто, спасибо, но вы правы. Я должен был упомянуть, что меня интересовало решение, которое не включить C++ 11. :) – Alex

Смежные вопросы