C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

STL : vector

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Gib
Guest





PostPosted: Mon May 24, 2004 10:36 am    Post subject: STL : vector Reply with quote



Bonjour

vector <int>v ;
v.insert(v.begin().1) // Ici j'insère 1 en dans la première case de v

vector <int>::iterator itl ;
itl=v.begin() : itl++;
v.insert (itl,2) /* Est ce que ici j'insére 2 dans la case
pointé par itl ou avant la case pointé par itl ???????
J'insére dans la 1er case ou la 2nd case
de v ????


Merci

Back to top
Patrick Mézard
Guest





PostPosted: Mon May 24, 2004 10:51 am    Post subject: Re: STL : vector Reply with quote



Gib wrote:
Quote:
Bonjour

vector <int>v ;
v.insert(v.begin().1) // Ici j'insère 1 en dans la première case de v

Tu peux aussi écrire :

v.push_back(1)

Quote:
vector <int>::iterator itl ;
itl=v.begin() : itl++;

std::vector<> est un conteneur à accès aléatoire, tu peux écrire plus
simplement :

vector<int>::iterator itl = v.begin()+1;

Note que dans ton cas itl==v.end()

Quote:
v.insert (itl,2) /* Est ce que ici j'insére 2 dans la case
pointé par itl ou avant la case pointé par itl ???????
J'insére dans la 1er case ou la 2nd case
de v ????

http://www.sgi.com/tech/stl/Sequence.html :

"
a.insert(p, t) : A copy of t is inserted before p. [2] [3]

[2] Note that p equal to a.begin() means to insert something at the
beginning of a (that is, before any elements already in a), and p equal
to a.end() means to append something to the end of a.
"

Donc tu insères ton élément en fin de séquence. Attention, itl n'est
plus valide après l'insertion.

Patrick Mézard

Back to top
Gib
Guest





PostPosted: Mon May 24, 2004 12:12 pm    Post subject: Re: STL : vector Reply with quote



Patrick Mézard wrote:
Quote:
Tu peux aussi écrire :

v.push_back(1)

Je n'ai pas remarqué qu'il existait aussi ses méthodes pour vector, pensant
que c'etait uniquement pour list....
Merci de me l'avoir montré !

Ok j'ai compris le fonctionne de "insert" :-)

Merci

Gib


Back to top
Alexandre BACQUART
Guest





PostPosted: Mon May 24, 2004 9:26 pm    Post subject: Re: STL : vector Reply with quote

Gib wrote:

Quote:
Patrick Mézard wrote:

Tu peux aussi écrire :

v.push_back(1)


Je n'ai pas remarqué qu'il existait aussi ses méthodes pour vector, pensant
que c'etait uniquement pour list....
Merci de me l'avoir montré !

C'est souvent le cas, un des avantages étant de passer de vector à list
ou je ne sais quoi en ne changeant que la déclaration.


--
Tek

Back to top
Antonio DA SILVA
Guest





PostPosted: Wed Jun 02, 2004 9:25 am    Post subject: Re: STL : vector Reply with quote


Quote:
Je n'ai pas remarqué qu'il existait aussi ses méthodes pour vector,
pensant
que c'etait uniquement pour list....
Merci de me l'avoir montré !

C'est souvent le cas, un des avantages étant de passer de vector à list
ou je ne sais quoi en ne changeant que la déclaration.

En effet, le passage de list à vector et réciproquement est aisé. Un autre
conteneur, qui gangnerait à être connu, est le deque, il regroupe en gros
les interfaces de vector et list.

On se demande pourquoi avoir "quasi la même chose" avec ces conteneurs.
Et bien il y a des différences fondamentales entre le vector et la list.
Dans un vector, la mémoire est "consécutives" (tableau) pour ses éléments,
si une insertion dépasse sa taille, tout est réalloué. Pour la liste,
il y juste insertion d'un nouveau maillon (liste chainée) créé n'importe où
en
mémoire.
vector ==> faible coût mémoire mais réallocations couteûses,
list ==> plus gros coût mémoire mais pas de réallocation.

Par ailleurs, comme la liste se trouve "disséminée" en mémoire,
perte d'optimisation de cache mémoire et pas d'accès direct à un élément.
Pour le vecteur, comme les données sont contigües, performance
d'accès et accès direct à un élément quelconque.

Ces considérations doivent orienter les choix pour tel ou tel container.

A+



Back to top
Patrick Mézard
Guest





PostPosted: Sun Jun 06, 2004 2:33 pm    Post subject: Re: STL : vector Reply with quote

Antonio DA SILVA wrote:
Quote:
Je n'ai pas remarqué qu'il existait aussi ses méthodes pour vector,

pensant

que c'etait uniquement pour list....
Merci de me l'avoir montré !

C'est souvent le cas, un des avantages étant de passer de vector à list
ou je ne sais quoi en ne changeant que la déclaration.


En effet, le passage de list à vector et réciproquement est aisé. Un autre
conteneur, qui gangnerait à être connu, est le deque, il regroupe en gros
les interfaces de vector et list.

On se demande pourquoi avoir "quasi la même chose" avec ces conteneurs.
Et bien il y a des différences fondamentales entre le vector et la list.
Dans un vector, la mémoire est "consécutives" (tableau) pour ses éléments,
si une insertion dépasse sa taille, tout est réalloué. Pour la liste,
il y juste insertion d'un nouveau maillon (liste chainée) créé n'importe où
en
mémoire.
vector ==> faible coût mémoire mais réallocations couteûses,
list ==> plus gros coût mémoire mais pas de réallocation.

L'invalidation des itérateurs après telles ou telles operation est aussi
un critère de choix important. Cela permet ou non l'utilisation
conjointe de plusieurs conteneurs, l'un contenant des itérateurs sur des
éléments de l'autre.

Patrick Mézard

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.