Que fait Alloc dans vector<T, Alloc>

razuki Messages postés 242 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 5 décembre 2012 - 10 févr. 2011 à 18:52
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 10 févr. 2011 à 19:08
Bonjour,
Je n'ai pas très bien compris le rôle d'Alloc dans vector<T, Alloc>
Ici : [url]http://www.sgi.com/tech/stl/Vector.html/url, ils disent que Alloc est un allocateur de mémoire. Mais ce que j'ai compris : d'après la définition de la classe Vector, on n'a plus besoin d'allocateur ... non ? J'ai cherché un peu sur les tutoriels c++ mais je n'ai pas trouvé d'explication.
Mes questions :
1) Concrètement c'est quoi Alloc ? à quoi il sert ?
2) c'est qui qui crée Alloc ?
3) est ce que quelqu'un aurait un exemple court et simple montrant comment manipuler un vector avec Alloc.

Merci d'"avance pour votre aide

1 réponse

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
10 févr. 2011 à 19:08
Il y a un alloc par défaut.

std::vector est une classe qui te permet de créer des tableaux. Tu ne gères certes plus la mémoire toi même, mais ça ne veut pas dire que ce n'est pas fait pour toi derrière !
Le second paramètre te permet de spécifier ton propre allocateur, ta propore manière de gérer la mémoire. Par défaut, tu va stocker en RAM, d'une certaine manière que je ne vais pas décrire, mais tu pourrais très bien refaire un allocateur à base de mmap (écriture fichier rapide) ou sur la stack.

Un exemple d'allocateur:
http://www.josuttis.com/libbook/memory/myalloc1.cpp.html

Bien évidemment, tu peux aussi te contenter de faire:
std::vector tab;
tab.push_back(90);
tab.push_back(1);
tab.push_back(3);


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous