permet de dire que j'ai un vecteur de vecteurs: Je sais que le vecteur peut être réaffecté s'il n'a pas suffisamment de capacité. est-il possible que la réaffectation de table [ i] em> réaffectant aussi table em>? p> p>
Je me demande s'il y a une possibilité de vecteur table em> réaffectant si je le fais: p>
5 Réponses :
non. Cela ne provoquera pas une réaffectation dans la table Le seul opérateur / fonction appelé sur code> Table code> est l'opérateur La raison pour laquelle vous pouvez modifier la taille du vecteur des sous-vecteurs (la table code>. P>
[] code>, qui promet de temps constant. Si la réaffectation s'est produite, cela violerait la promesse de temps constante. P>
[i] code> s) sans nécessiter d'espace supplémentaire à affecter dans le vecteur de niveau supérieur est un stockage de vecteur est géré via un pointeur sur un bloc de mémoire. Ainsi, augmenter la quantité d'éléments utilisée vecteur ne modifie pas la taille du vecteur objet em>. P>
Tableau [I] .Size () Code> Modifications sans changement
Tailleof (Tableau [I]) Code>. P>.
Non, car le contenu de table code> est inchangé - il contient toujours exactement les mêmes instances qu'auparavant. Seul le stockage de la table
[i] code> doit être réaffecté.
Vecteur code> contient un pointeur sur le stockage - la taille de l'objet vectoriel est toujours la même, seule la matrice référencée peut se développer ou rétrécir. Par conséquent, la table [I] n'est pas de plus en plus en croissance, si c'est ce que vous demandez - seul le tableau indique que c'est. P>
non. Appeler une méthode d'un «code> vecteur code> S ne serait pas affecter le vecteur Considérez ceci comme appel suivant: parent_object.child_Object.Method (), où enfant_Object ne connaît rien sur le parent_Object. La méthode () ne peut pas changer l'état de parent_object. P>
La même chose va pour le vecteur de vecteurs. (Techniquement, vous stockez ici une gamme de pointeurs à des tableaux. Redimensionnement L'une des matrices d'enfants est une opération locale et modifie le pointeur approprié, mais ne modifie pas la taille de la matrice mère.) P> code> lui-même. P>
Non, cela n'aura pas d'incidence: la mise en œuvre des vecteurs est basée sur un tableau dans la plupart des cas (c'est à peu près l'idée des vecteurs), bien que cela ne soit pas défini dans la pierre dans la spécification de langue. En tout cas, la nature dynamique des vecteurs exclut toute forme de séquence inline dans la structure de données, c'est-à-dire. La séquence des éléments gérés par la classe code> de la classe code> ne peut pas être à l'intérieur de la classe code> de la catégorie code>, mais est nécessairement un chunck de mémoire situé ailleurs, avec un pointeur de la classe. P >
Votre type de données est donc similaire à un réseau dynamique de pointeurs à des matrices dynamiques. Réaffecter une matrice pointue n'aura pas d'effet sur la matrice de pointeur. P>
Non, cela ne peut pas arriver. redimensionner code> ne change pas la taille du vecteur objet em> - il ne modifie que le stockage dynamique que le vecteur gère em>. Donc, du point de vue du vecteur extérieur, tous les éléments restent inchangés (et ont la même taille). P>