Réponse acceptée !
Bonjour.
Tout d'abord, je te déconseille l'usage d'un std::vector de std::vector. C'est généralement pas terrible. Un boost::multi_array est plus adapté. On peut aussi créer un std::vector à une seule dimension de taille N*N et feinter à l'usage en appelant "[x * size + y]" au lieu de "[x][y]".
Néanmoins, si tu ne veux pas de dépendance à boost ou ne pas réécrire ton code (ce qui est compréhensible), dans ce cas, fais au moins attention à une chose:
Un std::vector n'a pas ses éléments fixe en mémoire !
En effet, il y a une optimisation qui consiste à doubler la taille de la capacité si la taille venait à dépasser cette capacité.
Ex:
Si tu insère un 2+ éléments, la taille est de 2+, mais la capacité est de 4.
Si tu insère un 4+ éléments, la taille est de 4+, mais la capacité est de 8.
Si tu insère un 8+ éléments, la taille est de 8+, mais la capacité est de 16.
etc...
Ça évite de refaire une allocation à chaque ajout d'élément. Le souci, c'est que ça te fais croire, à tord que la zone mémoire est toujours la même (surtout quand tu as beaucoup d'éléments, vu que tu ne réalloues pas souvent).
Il faut savoir que si en augmentant la capacité, il n'y a pas assez de place en mémoire pour avoir tes éléments de manière contigües, alors realloc est utilisé (ce qui change la zone mémoire).
En d'autre terme, tu ne peux absolument pas prendre l'adresse d'un élément dans un std::vector !
On ne fait jamais de "std::vector<T>" en prenant l'adresse de T, celle-ci pouvant changer en cas d'ajout ou de suppression d'élément dans le tableau.
Pour résoudre ton problème, tu peux tout à fait faire un std::vector<std::vector<cv::Rect*>*>. Si le pointeur change de place, ce n'est pas grave, car il pointera toujours sur la zone que tu veux.
(J'utilise la librairie opencv sous mac)
Bibliothèque, merci :)
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question