Déjà, quelle drole d'idée de demander l'allocation dynamique d'un objet de type std::vector.
Le but de cette classe est, justement, de te permettre de travailler sans avoir à t'occuper de tout ce qui a trait à la gestion de la mémoire, ce n'est pas pour en arriver à ... vouloir gérer toi meme l'adresse mémoire auquel il se trouve
.
Tu aurais bien plus facile à travailler avec un objet sous forme de valeur:
std::vector<std::string> v; //ni plus, ni moins :D
Maintenant, si ce sont différentes fonctions qui doivent s'occuper d'insérer des éléments dans ton vecteur, il faut penser à le passer sous la forme d'une référence (ou, si c'est pour un accès en "lecture seule", sous la forme d'une référence constante) à tes fonctions:
1 2 3 4 5 6 7 8 9
| void ajouteChaine(std::vector<std::string> & vect, std::string const & chaine){
vect.push_back(chaine);
}
void afficheTout(std::vector<std::string const & vect){
//C++11 inside :D
for(auto it : vect){
std::cout<<it<<std::endl;
}
} |
qui seraient utilisées sous la forme de
1 2 3 4 5 6 7 8 9
| int main(){
std::vector<std::string> v; //j'ai dit: ni plus ni moins :D
ajouteChaine(v,"Alain");
ajouteChaine(v,"Henri");
ajouteChaine(v,"Suzanne");
ajouteChaine(v,"Emile");
afficheTout(v);
return 0;
} |
Partager