Insérer des éléments n'importe où dans un VECTOR [Résolu]

Messages postés
10
Date d'inscription
dimanche 8 mai 2005
Dernière intervention
8 novembre 2011
- - Dernière réponse : turnerom
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
12 janvier 2012
- 7 déc. 2006 à 17:06
Bonjour à tous

J'ai un petit problème à propos de la classe Vector fournit par STL. En fait j'aimerai insérer un élément n'importe où dans le vector, j'ai essayé mais les résultats ne sont pas très concluant
Je m'y suis pris comme ceci, je ne trouve pas ça très propre, je présume qu'il y a une autre manière:

/*
nom du vecteur : _vect
 taille du vecteur > 10
*/
{
int elt = 10;
std::vector::iterator it = _vect.begin();
it+=10;
_dic.insert(it,elt);
}

En gros voilà, j'arrive à insérer en début et en fin mais pas n'importe où

Merci pour vos réponses
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
12 janvier 2012
3
Merci
Ben pour inserer, tu fais mon exemple ci-dessus, et pour récupérer un element, le plus simple, c'est encore de faire :
ton_vecteur[pos]

vector v;
v.resize[4];
v[0]=10;
v[1]=20;
v[2]=30;
v[3]=40;

Pour récupérer 20 :
int num=v[1];

Pour insérer 25 à la position 2 (avec la fonction ci-dessus) :
my_insert_func(v, 2, 25);

Ton nouveau vecteur :
{10,20,25,30,40}

Tout ca n'a rien de bien compliqué !

TuRn3r

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de turnerom
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
0
Merci
C'est fait exprès. Si tu veux insérer un élément au milieu, c'est très inefficace avec un vector (il faut décaler tous les éléments suivants). Tu peux faire ta propre méthode à la main si tu veux quand même utiliser un vector, mais c'est peut être plus judicieux d'utiliser une liste chainée (std::list)

_____________________________________
Commenter la réponse de vecchio56
Messages postés
492
Date d'inscription
samedi 10 juillet 2004
Dernière intervention
12 janvier 2012
0
Merci
//
vec le vecteur
// pos l'index ou inserer l'element
// elem l'element a inserer


template <class T>
void my_insert_func(std::vector<T> & vec, int pos, T elem)
{

  std::vector<T>::iterator it = vec.begin();
  it+=pos;
  vec.insert(it, elem);

}

puis :
my_insert_func(
vect, 10, elt);







TuRn3r
Commenter la réponse de turnerom
Messages postés
10
Date d'inscription
dimanche 8 mai 2005
Dernière intervention
8 novembre 2011
0
Merci
merci pour les réponses, en fait le côté bénéfique du vecteur pour l'utilisation que j'en ait c'est que je peux acquérir un élément à n'importe quelle position avec vect.at(int position), je voulais également pouvoir insérer un élément n'importe où. Apparament ceci ne fonctionne pas. Si avec une liste je peux insérer n'importe où, je ne peux pas acquérir un élément à une position donnée. Je pense donc que je suis piégé, je voulais bien utiliser map mais bon au niveau des performance c'était pas top.
Auriez-vous une autre solution ? Sinon et bien tant pis ce n'est pas grave, je trouverais bien autre chose

Bonjour chez vous
Commenter la réponse de Weedygamer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.