Relocalisation triviale Qt et C++ (Partie 1)
Le récipient Des classes introduit dans Qt 4 (Tulipe, pour le amateurs) avait un intéressant optimisation: le capacité à tourner certain opérations sur le contenu objets dans niveau octet manipulations.
Exemple: vecteur réaffectationConsidérer le réaffectation de un QVecteur : quand le vecteur est complet et nous vouloir à insérer un nouveau valeur (de taper T), le vecteur a à allouer un plus gros bloc de mémoire.
Simplifier, le chemin ce est fait pour un générique taper T est :
Allouer un plus gros bloc de mémoire. Déplacer-construire le T objets depuis le actuel stockage dans le nouveau mémoire. Détruire le bouger de objets dans vieux actuel stockage. Désallouer le vieux bloc de mémoire. Mise à jour Tenue de livre compte (ajuster données aiguille, taille, capacité, comme nécessaire).Dans pseudocode, ce regards quelque chose comme ceci :
modèle vecteur ::reallocate_impl(size_t new_capacity) { assert(m_sizeLe récipient Des classes introduit dans Qt 4 (Tulipe, pour le amateurs) avait un intéressant optimisation: le capacité à tourner certain opérations sur le contenu objets dans niveau octet manipulations.
Exemple: vecteur réaffectationConsidérer le réaffectation de un QVecteur : quand le vecteur est complet et nous vouloir à insérer un nouveau valeur (de taper T), le vecteur a à allouer un plus gros bloc de mémoire.
Simplifier, le chemin ce est fait pour un générique taper T est :
Allouer un plus gros bloc de mémoire. Déplacer-construire le T objets depuis le actuel stockage dans le nouveau mémoire. Détruire le bouger de objets dans vieux actuel stockage. Désallouer le vieux bloc de mémoire. Mise à jour Tenue de livre compte (ajuster données aiguille, taille, capacité, comme nécessaire).Dans pseudocode, ce regards quelque chose comme ceci :
modèle vecteur ::reallocate_impl(size_t new_capacity) { assert(m_sizeWhat's Your Reaction?