2016-04-25 13 views
-1

Dies ist eine Frage über Terminologie oder Konzepte (nicht C++ - Konzepte).Welcher Ausdruck kann für eine Funktion verwendet werden, die auf jedes Element einer Sequenz angewendet wird, obwohl der Index bekannt ist?

Wenn ich schreibe

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

Sie würden sagen, dass ich die Funktion angewendet wird, oder Funktors oder Funktionsobjekt f auf jedes Element im Bereich; und f Unterschrift ist entweder

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

oder es hat einen Operator

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

Nun nehme ich das gleiche tun, aber die Funktion bekommt nicht nur einen Verweis auf das Element des Bereichs, sondern auch seinen Index: Für * my_start es 0 bekommt, dann 1 usw. Nun sind die Unterschriften sind

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

(wenn Sie nicht size_t dann so tun, mögen int es ist).

Also, die Frage ist: Gibt es einen Begriff für diese Art von Funktoren/Funktionen? Oder für diesen Vorgang, ein solches Funktions-/Funktorfunktionsobjekt auf eine Reihe von Elementen anzuwenden?

+2

aufzählen? Vergleichen Sie mit der Funktion von Python [enumerate] (https://docs.python.org/2/library/functions.html#enumerate), die '(idx, element)' für jedes Element der ursprünglichen Sequenz liefert. – Andrew

Antwort

-1

So, basierend auf @ Andrew Kommentar, lassen Sie uns diese Operation nennen eine aufgezählt foreach, und wenn die ursprüngliche f eine einstellige Funktion war, haben wir die Aufzählungs Variante einstellige Funktion nennen kann eine aufgezählt, und das erste Argument könnte Seien Sie der Enumerator.