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:
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];
}
Pour dérouler mon algo, j'ai besoin de diviser cette matrice en 4 blocs.
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é...)

En espérant être à peu près compréhensible...

Merci d'avance!