J'ai un problème à comprendre certaines choses à propos des tableaux en C++ et s'il vous plaît nus avec moi car je n'ai pas trouvé de réponse à ma question dans d'autres questions sur Stackoverflow qui incluent des tableaux.Comparaison de stockage 2d array et 1d array?
Si j'ai un tableau avec 3 lignes et 4 colonnes et que je les crée en tant que tableau 1d et que j'accède à chaque ligne de données en bouclant le tableau de 4 chaque fois. Est-ce que cela me fait gagner du temps par rapport à l'approche 2d qui nécessite beaucoup plus d'allocation.
donc au lieu de cela:
int **array = new int * [3];
for(int i = 0; i < 4; i++) {
array[i] = new int [4];
}
Je fais cette:
int *array = new int [3 * 4];
et j'accéder à chaque ligne de données de cette façon: rows = 3, colomns = 4:
for(int i = 0;i < 3; i++) {
for(int j = 0;j < (3 * 4); j++) {
cout << "row : << i << " , 4: " array[i * j];
}
}
1) est-ce que cela économise du temps pour mon programme mieux que 2d ou non?
2) Est-ce une mauvaise approche ou une bonne approche de mon réseau 2d dans un tableau 1d comme je l'ai fait?
REMARQUE:
mon tableau ne sera pas dynamique, la taille de mon tableau sera savoir avant de créer, je vais l'utiliser dans mon projet de réseau de neurones. et mes préoccupations et ma concentration sont sur la vitesse. S'il vous plaît pardonnez-moi si ma question est idiote mais j'ai cherché avant et je n'ai pas compris.
merci d'avance.
accès devrait être 'tableau [colomns * i + j]' (ou 'tableau [lignes * j + i]') ... – Jarod42
vérifier mes modifications? @ Jarod42 –
Vous aurez une meilleure mémoire cache avec un tableau 1d, mais si la taille est connue au moment de la compilation, vous pouvez directement faire 'int array [3] [4];'. – Jarod42