PDA

View Full Version : [C++] inserimento elementi in vector


jepessen
18-07-2007, 00:43
Salve a tutti.

Vi dico prima che sono praticamente un poppante nel mondo del C++:D quindi abbiate pazienza...

Il mio problema attuale è il seguente: ho creato un oggetto vector<int>.

Ora, tramite il metodo push_back inserisco elementi alla fine, ma se voglio inserire un elemento in mezzo all'oggetto vector?

Per esempio

a = vector<int>

a.push_back(1);
a.push_back(2);
a.push_back(3);

A questo punto, voglio inserire il valore 4 fra 2 e 3, in maniera tale che il vettore risulti, alla fine

a[0] = 1
a[1] = 2
a[2] = 4
a[3] = 3

Devo utilizzare il metodo insert, e fin qui ci sono, ma devo utilizzare come argomento anche un iteratore, ed a questo punto la pulce al posto del mio cervello si mette a saltare come una pazza...

Da un pezzo di codice che ho trovato in rete

vector<char>::iterator theIterator = alphaVector.begin();
alphaVector.insert( theIterator, 4, 'C' );

questo codice mette 4 'C' all'inizio, ma io voglio metterlo invece in una posizione precisa. Devo forse fare qualcosa come theIterator += 2? Oppure posso direttamente dargli il valore che voglio theIterator = 3 (che si gestisce lui tramite overloading)?

Thanks per le risposte e scusate per la niubbaggine

Daniele

mapomapo
18-07-2007, 06:34
int i,pos,elemento;

elemento = 4;

for(i=0;i<nomevettore.size();i++)
if(nomevettore[i]==3)
pos = i;

insert(nomevettore.begin() + pos, 1, elemento);



dovrebbe andare, calcola che sono mucho assonnato e che ho aperto gli occhi 10 minuti fa :D ...
mi sono servito di
http://msdn2.microsoft.com/en-us/library/s5bta5ha(vs.80).aspx
questo esempio comunque.. :)

Vito

tomminno
18-07-2007, 10:24
Se vuoi inserire alla 4a posizione basta sommare 3 all'iteratore iniziale, ottenuto con il metodo begin().


vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(5);

v.insert(v.begin()+3,4);

jepessen
18-07-2007, 12:20
Grazie a tutti. Vado a provare le soluzioni.

Daniele