Originariamente inviato da Habdul
cmq se esiste il .begin() c'è anche il .end().

Senza che fai quel "+i" che suona brutto!!! Aggiorni ogni volta al nuovo .end()!!! E' molto + leggibile e ottimizzato!
Quello è il codice per sostituire la carta e funziona così:
quella 'i' corrisponde all'idCard, ad esempio se io ho 5 carte in mano elencate così:

1. nomecarta
2. nomecarta
3. nomecarta
4. nomecarta
5. nomecarta

l'utete premendo 2(sarebbe 1 dato che si parte da 0) inserisce prima dell'elemento puntato dall'iteratore alla posizione inizio + id l'ultima carta del mazzo, dopo devo eliminare la carta di prima che sarà slittata di una posizione quindi inizio + id + 1. Ecco il codice del metodo completo:

codice:
//'c' è l'ultima carta del mazzo, i la posizione da cambiare
void Mano::change(Carta c, int i) {	
vector<Carta>::iterator it = mano.begin() + i;
	mano.insert(it, c);
	mano.erase(it+1);
}
Oro provo a capire come far funzionare con .end() l'eliminazione dell'ultima carta del mazzo e se ho problemi posto.

ciao e grazie