Si dovrebbe fidare il compilatore con quello. Tuttavia, potrei suggerire 2 alternative che so funzionare bene a seconda dell'applicazione.
1) usa int a [10] [10] ma assicurati di accedervi nell'ordine corretto durante il ciclo. Il compilatore "sotto" utilizzare un'unica struttura matrice così acessing per
for(i = 0 ; i < 10 ; i++) {
for (j = 0 ; j < 10 ; j++) {
// do something with a[i][j]
}
}
vs
for(i = 0 ; i < 10 ; i++) {
for (j = 0 ; j < 10 ; j++) {
// do something with a[j][i]
}
}
è diversa in termini di prestazioni. Più tardi è più performante.
2) L'opzione 1 richiede maggiore attenzione ed è contro-intuitiva. Preferisco di gran lunga fare
int a[100]
e fare
for(i = 0 ; i < 100 ; i++)
inline_function(a[i]);
in cui la funzione deve essere dichiarata in linea e preforme la cosa che devi aver fatto. Se puoi evitare la funzione, è ancora meglio. Ad esempio, se è una somma, averla 2d o vector non cambia nulla.
EDIT: qui è un riferimento che spiegano nei dettagli la punta circa l'ordine di matrice: http://www.cplusplus.com/doc/tutorial/arrays/
penso che la differenza qui è ciò che è più facile da capire. – Matthew