Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3202 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] Comment copier les membres d'un array vector vers une autre...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Comment copier les membres d'un array vector vers une autre...

n°46047
Alload
Posté le 12-07-2001 à 00:03:26  profilanswer
 

Je sais comment effacer un membre d'un tableau de vector, mais j'aimerais en plus alors déplacer tous les membres suivant celui effacer d'un cran vers le bas.
 
Par exemple: j'efface le membre 5, donc le membre 6 devient le 5, le membre 7 devient le 6, etc...
 
Comment puis-je faire ça?

mood
Publicité
Posté le 12-07-2001 à 00:03:26  profilanswer
 

n°46055
wpk
Posté le 12-07-2001 à 00:40:55  profilanswer
 

euh,  
 
exemple:
 
vector<int> v(10);
vector<int>::iterator it=v.begin()+5;
 
copy(it+1,v.end(),it);


---------------
"Si ton labeur est dur, et si tes résultats sont minces, rappelle-toi  
n°46056
Alload
Posté le 12-07-2001 à 00:43:08  profilanswer
 

Tu pourrais expliquer comment ton code marche?
SVP

n°46057
wpk
Posté le 12-07-2001 à 00:53:43  profilanswer
 

Donc :
vector<int> v(10);  //<- ca c'est ton vecteur, ici, j'en ai mis un au pif qui a 10 elements
vector<int>::iterator it=v.begin()+5;  //<-ca c'est un iterateur sur ton vecteur, il pointe ici sur le 5eme element du vecteur (a priori, qd tu efface ton element, tu devrais utiliser un iterateur qui lui va pointer sur l'element supprime ici 5)
 
copy(it+1,v.end(),it);  //<-ca c'est un algorithme #include <algorithm> qui effectue la copie de tous les elements entre la position it+1 et la fin de ton vecteur dans le meme vecteur mais a partir de la position de l'elt supprime
en gros : *it=*(it+1), *(it+1)=*(it+2), ... *(v.end()-1)=*(v.end())
 
j'espere que j'ai ete suffisament clair (passe minuit, mon cerveau downclocke...)


---------------
"Si ton labeur est dur, et si tes résultats sont minces, rappelle-toi  
n°46065
Willytheki​d
Posté le 12-07-2001 à 04:59:39  profilanswer
 

Heu...on se calme :) Pas besoin de tout ca !
 
L'interet du vector (ou le prb, c'est selon) c'est justement de faire tout ca pour toi !! Pourquoi tu as choisi un vector et pas un simple tableau (/pointer) ???
 
En fait quand tu delete un element, il deplace tout ce qu'il y a derriere d'un cran...Meme chose quand tu en insert un. Donc si c'est ce que tu cherche c'est parfait (voir exemple plus bas).
 
Le prb, c'est que, a moins de supprimer le dernier element du vector, il y a un deplacement des elements qui prend du temps(d'autant plus que l'element supprime se trouve en tete). Donc au cas ou tu fais de l'insertion/suppression a donf : il y a un gros prb. Mieux vaut choisir les list (ou les deques?).
 
Bref pour exemple (tire de MSDN):
 
vector<int> MyVector;
 
// size = 0
// contenu du vector : {}
 
for (int i=0; i<=9; i++) {
   MyVector.push_back(i);
}
 
// size = 10
// contenu du vector : {0,1,2,3,4,5,6,7,8,9}
// MyVector[1] = 1
 
MyVector.erase(MyVector.begin() + 2);
 
// size = 9
// contenu du vector : {0,2,3,4,5,6,7,8,9}
// MyVector[1] = 2
 
PS: tu aurais pu regarder dans la MSDN : tout ca est explique tres clairement !!


---------------
Si t'es pas net, reste a la buvette
n°46084
titi_4js
Posté le 12-07-2001 à 10:03:34  profilanswer
 

euh Willythekid, t'es sur que c'est pas le 2 qui est efface de ton tableau plutot : v.begin() pointe sur le premier element du vecteur (0) et dinc v.begin()+1 pointe sur le 2eme (1)...

n°46088
El_gringo
Posté le 12-07-2001 à 10:14:48  profilanswer
 

titi_4js a écrit a écrit :

euh Willythekid, t'es sur que c'est pas le 2 qui est efface de ton tableau plutot : v.begin() pointe sur le premier element du vecteur (0) et dinc v.begin()+1 pointe sur le 2eme (1)...  




 
tu chipottes un peu toi...

n°46096
Willytheki​d
Posté le 12-07-2001 à 10:25:38  profilanswer
 

Ah euh...oui desole :)
C'est avec des conneries comme ca qu'on passe une demi-heure a debugger 3 lignes :)


---------------
Si t'es pas net, reste a la buvette
n°46103
Alload
Posté le 12-07-2001 à 10:40:11  profilanswer
 

:D
 
Enfin merci, c'est plutôt cool les vectors.
:)
 
Sinon, où est la doc sur les vectors dans la SDK?

n°46104
Willytheki​d
Posté le 12-07-2001 à 10:44:00  profilanswer
 

uh? hein ? "la doc sur les vectors dans la SDK" ???
 
La doc sur la version microsoft (VC++ 6) de la STL est la :
http://msdn.microsoft.com/library/ [...] tdlbhm.htm
 
ou la :
http://www.dinkumware.com/htm_cpl/index.html
 
a+ et bonne chance :)


---------------
Si t'es pas net, reste a la buvette

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Comment copier les membres d'un array vector vers une autre...

 

Sujets relatifs
[C++] Comment associer un pointeur à vector<bool>?copier les sources d'une page dans...
Migration d'une dba ACCESS 2 vers ACCESS 97[PHP] comment transformer un long string en array ?
[MYSQL]Copier une base de donnéeau secours: diriger vers plusieurs page à partir d'un formulaire
[Visual C++] intercepter des scanf ou des cout vers boite de dialogue.[ACCESS] migration d'une table vers un server SQL
[XML] Copier coller un noeud ...[PHP] Utiliser la fonction array_count_values.
Plus de sujets relatifs à : [C++] Comment copier les membres d'un array vector vers une autre...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR