I fatti:
i ++ e ++ i sono ugualmente facili da leggere. Non ti piace perché non ci sei abituato, ma essenzialmente non c'è niente che tu possa interpretare erroneamente, quindi non c'è più lavoro da leggere o scrivere.
In almeno alcuni casi, l'operatore postfix sarà meno efficiente.
Tuttavia, nel 99,99% dei casi, non importa perché (a) agirà comunque su un tipo semplice o primitivo ed è solo un problema se sta copiando un grande oggetto (b) non sarà in una performance parte critica del codice (c) non sai se il compilatore lo ottimizzerà o meno, potrebbe farlo.
Quindi, suggerisco di usare il prefisso, a meno che non sia specificamente necessario che Postfix sia una buona abitudine, solo perché (a) è una buona abitudine essere precisi con altre cose e (b) una volta in una luna blu si intende usare Postfix e capirlo nel modo sbagliato: se scrivi sempre quello che vuoi dire, è meno probabile. C'è sempre un compromesso tra prestazioni e ottimizzazione.
Dovresti usare il tuo buon senso e non micro-ottimizzare fino a quando non è necessario, ma non essere palesemente inefficiente per il gusto di farlo. In genere ciò significa: in primo luogo, escludere qualsiasi costruzione di codice inaccettabilmente inefficiente anche nel codice non critico in termini di tempo (normalmente qualcosa che rappresenta un errore concettuale fondamentale, come passare oggetti da 500 MB in valore senza motivo); e in secondo luogo, di ogni altro modo di scrivere il codice, scegliere il più chiaro.
Tuttavia, qui, credo che la risposta sia semplice: credo che scrivere il prefisso a meno che non sia specificamente necessario postfix sia (a) molto marginalmente più chiaro e (b) molto marginalmente più probabile che sia più efficiente, quindi dovresti sempre scriverlo per impostazione predefinita, ma non preoccuparti se lo dimentichi.
Sei mesi fa, pensavo lo stesso di te, che i ++ fosse più naturale, ma è puramente quello a cui sei abituato.
EDIT 1: Scott Meyers, in "Più efficace C ++" di cui mi fido generalmente su questa cosa, dice che dovresti in generale evitare di usare l'operatore postfix su tipi definiti dall'utente (perché l'unica implementazione sana della funzione di incremento postfix è quella di fare un copia dell'oggetto, chiamare la funzione di incremento del prefisso per eseguire l'incremento e restituire la copia, ma le operazioni di copia possono essere costose).
Quindi, non sappiamo se ci sono regole generali su (a) se ciò è vero oggi, (b) se si applica anche (meno) ai tipi intrinseci (c) se dovresti usare "++" su niente di più che una classe di iteratori leggeri di sempre. Ma per tutti i motivi che ho descritto sopra, non importa, fai quello che ho detto prima.
EDIT 2: si riferisce alla pratica generale. Se pensi che abbia importanza in qualche caso specifico, allora dovresti profilarlo e vedere. La profilazione è semplice ed economica e funziona. Dedurre dai primi principi ciò che deve essere ottimizzato è difficile e costoso e non funziona.
i++
prima di sapere che poteva influire sulle prestazioni++i
, quindi sono passato. All'inizio quest'ultimo sembrava un po 'strano, ma dopo un po' mi sono abituato e ora sembra naturale comei++
.