Bonjour,
Je code actuellement une multiplication matricielle rapide de 3 matrices (type algo de Strassen, étendu à 3 matrices), dans laquelle j'ai besoin d'extraire des sous-matrices.
Par exemple:
Pour dérouler mon algo, j'ai besoin de diviser cette matrice en 4 blocs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int** matrice = new int*[10]; for (int i = 0; i < 10; i++) { matrice[i] = new int[10]; }
Afin d'éviter de copier et recopier des int en mémoire, je souhaiterais travailler avec les pointeurs vers : matrice[0][0], matrice[0][5], matrice[5][0] et matrice[5][5].
Ce que je souhaite faire, c'est une fonction récursive "rapid_mult", qui prend un pointeur vers une matrice en entrée la divise en 4 blocs, et commence à "remonter la chaussette" lorsque la matrice est d'ordre 2.
(il y a un padding de '0' à faire, mais ce n'est pas encore mon pb pour l'instant)
Comment passer les bons pointeurs à ma fonction? J'ai bien essayé, mais cela ne fonctionne pas (je pense que le pointeur n'est pas valable depuis une autre fonction que celle où il a été généré...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part &(matrice[i][j])
En espérant être à peu près compréhensible...
Merci d'avance!
Partager