Hello!
Je n'arrive pas à assigner un tableau classique à un vector de vector de vector (un vector 3D en clair) sans copier la zone mémoire.
C'est possible docteur?
 array to "3D vector"
 array to "3D vector"
				
				
						
						
				Hello!
Je n'arrive pas à assigner un tableau classique à un vector de vector de vector (un vector 3D en clair) sans copier la zone mémoire.
C'est possible docteur?
 
 
				
				
						
						
				Bon, je viens de voir que les vectors ne sont pas adaptes pour faire des tableaux 3D performants.
Il faut utiliser boost ou une autre librairie.
 
 
				
				
						
						
				Si tu optes pour tes propres classes, va lire les articles de notre très chère faq:
indexer une matrice
matrice != [][]
Cela t'évitera une aberration de conception malheureusement fréquente.
 
 
				
				
						
						
				Bonjour et bienvenue sur le forum
La copie ne sera faite que si tu le demandes ou si c'est indispensable (si tu fais un resize de taille supérieure). Dans ce cas, il faut réserver une taille suffisante dès le départ. Sinon je crois pas que ce soit un problème d'utiliser vector (tout au moins, tu auras le même problème avec n'importe quel conteneur)
 
 
				
				
						
						
				J'avais déjà posé la question sur ce forum, et je crois que par défaut std::vector fait systématiquement une recopie de la zone mémoire qu'on lui fournit. Par contre, il est possible de modifier ce comportement en fournissant un std::allocator qui n'est pas celui par défaut. C'est ce qui est fait dans Boost.Interprocess.
 
 
				
				
						
						
				Merci pour toutes ces informations; je vais étudier tout ça ce week-end.

 
 
				
				
						
						
				A noter que le chapitre sur les allocateur du livre de Josuttis est en libre consultation.
 
 
				
				
						
						
				J'ai choisi boost pour mon probleme (on sort de la STL). Voici une solution pour les interesses :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(clavier en qwerty, desole pour les accents )
Partager