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

Weedygamer 10 Messages postés dimanche 8 mai 2005Date d'inscription 8 novembre 2011 Dernière intervention - 5 déc. 2006 à 21:36 - Dernière réponse : turnerom 492 Messages postés samedi 10 juillet 2004Date d'inscription 12 janvier 2012 Dernière intervention
- 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 

4 réponses

Répondre au sujet
turnerom 492 Messages postés samedi 10 juillet 2004Date d'inscription 12 janvier 2012 Dernière intervention - 7 déc. 2006 à 17:06
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de turnerom
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 5 déc. 2006 à 21:49
0
Utile
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
turnerom 492 Messages postés samedi 10 juillet 2004Date d'inscription 12 janvier 2012 Dernière intervention - 6 déc. 2006 à 10:13
0
Utile
//
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
Weedygamer 10 Messages postés dimanche 8 mai 2005Date d'inscription 8 novembre 2011 Dernière intervention - 7 déc. 2006 à 16:42
0
Utile
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.