In C e C ++ (e credo che altri linguaggi che consentono di prendere un "riferimento" a un elemento dell'array o qualcosa di simile), quando si ha un tipo di array, l'accesso ai singoli elementi di tale array può essere fatto "direttamente" o tramite un riferimento temporaneo o un puntatore.
Esempio:
// Like this:
for(int i=0; i<n; ++i) {
theArray[i].frobnicate();
theArray[i].shrub();
if(i % 2) {
theArray[i].modulize();
}
}
// Or like this:
for(int i=0; i<n; ++i) {
TheType& elem = theArray[i];
elem.frobnicate();
elem.shrub();
if(i % 2) {
elem.modulize();
}
}
Ovviamente if il corpo del loop diventa troppo complesso dovrebbe essere usato un refactoring e l'intero accesso si sposta su una funzione / metodo separato che funzionerebbe naturalmente su un singolo elemento dell'array, ma per i casi in cui vi sono poche acess che vengono utilizzate solo in un ciclo, può essere più conveniente tenerle direttamente nel ciclo.
Abbiamo discusso su quale forma dovremmo preferire nel nostro team e le opinioni sono contrastanti, quindi mi interessa sapere se esistono alcune linee guida, specialmente wrt. C ++.
Modifica: questo è puramente di stile se vuoi. Le prestazioni sono irrilevanti, in quanto il nostro compilatore C ++ dovrebbe effettivamente generare esattamente lo stesso codice in entrambe le versioni.