2016-04-25 11 views
-1

Это вопрос терминологии или концепций (а не концепций C++).Какой термин я могу использовать для функции, применяемой к каждому элементу последовательности, учитывая ее индекс?

Если я пишу

std::for_each(my_start, my_end, f); 

Вы бы сказать, что я применил функцию или функтор, или функциональный объект f к каждому элементу в диапазоне; и подпись F является либо

void f(const decltype(*my_start)& x); 

или имеет оператор

void operator()(const decltype(*my_start)& x); 

Теперь предположим, что я делаю то же самое, но функция получает не только ссылку на элемент диапазона, но и индекс: Для * my_start он получает 0, то 1 и т.д. Теперь подписи

void f(size_t i, const decltype(*my_start)& x); 
void operator()(size_t i, const decltype(*my_start)& x); 

(если вам не нравится size_t тогда делать вид, что int).

Итак, вопрос: существует ли термин для этих видов функторов/функций? Или для этой операции применения такого объекта функции/функтора/функции к ряду элементов?

+2

enumerate? Сравните с функцией Python [enumerate] (https://docs.python.org/2/library/functions.html#enumerate), которая дает '(idx, element)' для каждого элемента исходной последовательности. – Andrew

ответ

-1

Так, на основе @ комментарий Эндрю, давайте назовем эту операцию перечислены Еогеасп, и если исходный е была одноместная функция, мы можем назвать Перечислимый вариант перечисленных одноместная функция, и его первый аргумент мог be перечислитель.