Ajout un element au vector

Fermé
nesta - 31 mars 2009 à 03:45
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 12 mai 2009 à 08:38
Bonjour,
j'ais cree un class vector
vector v=new vector;
je veut ajouter un element a mon vector à un emplacement precis
par exemple la dimension du vector est 9 et je veut mettre mon object à la case 7
coment faire
merci de votre reponse

4 réponses

Essaie v.add(6, "ta valeur"); comme un vecteur commence a partir de 0, on met 6 pour la 7eme place. Previens si ca marche
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
31 mars 2009 à 08:54
Salut.
Je ne comprends pas.
*Tu dis "j'ais cree un class vector" et ta question est comment ajouté un élément.
Si c'est toi qui a créé la classe, tu devrais le savoir, mais en tout nous, nous ne le pouvons pas car tu ne nous la donne pas.

*Quand tu dit ajouter, tu veux dire insérer entre deux éléments existant ou mettre dans une case déjà existante. Ce n'est pas clair là dessus.

*Il existe dans la STL une classe vector déjà toute faite, ne parlerai tu pas de ça ?
0
salut
merci pour ta reponse
je veut inserer un objet entre deux objets dejà existant dans vector
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
31 mars 2009 à 16:31
c'est un petit peu compliqué, il faut utiliser les itérateurs et la fonction insert (non testé) :
std::vector<T> A;
vector<T>::iterator iter;
iter=A.begin();
iter+=7;//on se déplace au septième élément
A.insert(iter,T(aa)); // insertion de la valeur "aa"
Ou, à tester plus simplement : A.insert(A.begin()+7,aa);
0
Juste comme ça, le coup du add ne marche pas, la méthode existe pas!

Perso, j'utiliserais plutot des list, mais si tu veux des vector absolument, tu peux ajouter à la fin ton élément, et décaler tous les autres après (les push_back et les supprimer ensuite):

void ajouter(vector<A> elements, A elementAAjouter, int pos)
{
elements.push_back(elementAAjouter);
A temp;

//on parcoure le tableau à partir de b, jusqu'à l'avant-dernière
for(int i=b; i<elements->size()-1; i++)
{
temp=mesVilles.at(i);
elements->push_back(temp); //ajout à la fin
elements->erase(elements->begin()+i); //suppression

}
}


A priori, ça marche comme y faut...
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298 > Oyoyoy
12 mai 2009 à 08:38
houlà, intervention inutile sur un vieu message.
Certes add n'existe pas, mais insert() si. https://en.cppreference.com/w/cpp/container/vector/insert
Ensuite, ta fonction c'est n'importe quoi. C'est quoi mesVilles ? C'est quoi b ? pos n'est pas utilisé.
L'algorithme, je ne sais pas, mais il est bien confus.
0