|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Roma
Messaggi: 493
|
C++ erase da vector
Dunque sto facendo un programmino(C++),in una porzione di codice devo prendere un elemento random da un vector,farci delle operazioni e cancellarlo.Ora probabilmente mi sono rincoglionito io ma non riesco ad eliminarlo in modo diretto,ovvero se genero un random n e vado poi ad accedere al vec[n] poi non so come eliminare direttamente vec[n].Il fatto è che erase() vuole come paramentro un iteratore,il che allunga la procedura di eliminazione....non esiste un modo diretto per eliminare vec[n]?
__________________
Listen the noise of deep sea --Powered by Debian Sid/unstable on 2.6.17.11-- |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
[caveat: vado a memoria]
Con gli iteratori puoi usare non solo gli operatori ++ ma anche la somma e quindi per eliminare il 5o elemento ( ad esempio ) puoi scrivere Codice:
vector<Foo> v< ... v.erase( v.begin() + 5 ); Codice:
swap( v[5] , v[ v.size()-1 ] ); v.pop_back(); |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Roma
Messaggi: 493
|
Ottimo quella dello swap mi sembra la soluzione migliore,non è che gli iteratori non mi vadano a genio,anzi sono ottimi strumenti,solo che in quel contesto un'accesso immediato mi veniva più comodo...a dire il vero avevo anche un po' di confusione,in effetti con gli iteratori era + semplice di quanto pensassi,il fatto è che quello che avevo in mente io si può fare con un vector ma non con un list....ed io ragionavo in termini di list...eheh
Grazie!
__________________
Listen the noise of deep sea --Powered by Debian Sid/unstable on 2.6.17.11-- |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Forse ancora meglio...
in fondo l'elemento da eliminare non ti serve tenerlo con lo swap... meglio copiargli direttamente sopra l'ultimo elemento: Codice:
v[5] = v.back(); v.pop_back(); |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Roma
Messaggi: 493
|
Ancora + efficente!
Thanks...
__________________
Listen the noise of deep sea --Powered by Debian Sid/unstable on 2.6.17.11-- |
|
|
|
|
|
#6 | |
|
Bannato
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:42.



















