Newsgroup: it.comp.lang.c++
Titolo: scansire un vector, come?

che metodo utilizzate per scansire un vector? usate l'iteratore oppure
l'indice?
cioè, usate
vector<TIPO>::iterator it = v.begin();
while (it != v.end()) {
	// qualcosa
	it++;
}
oppure
for (unsigned int i = 0; i < v.size(); i++) {
	// qualcosa
}
oltretutto se devo cercare un elemento da eliminare, sono costretto a
usare l'iteratore, perché la funzione erase vuole un iteratore e non
l'indice, dico bene?
un'ultima cosa, nel primo esempio ho scritto (it != v.end())... dovevo
forse scrivere (it < v.end())... tuttavia questo non funziona per
scansire altre classi tipo map... di nuovo: dico bene?
-- 
]\/[ad]\/[age
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

 scansire altre classi tipo map... di nuovo: dico bene?
si usa (it!=v.end()) in quanto non e' detto che end() sia strettamente 
maggiore di ogni valore di it, neanche per un vector

 }
anche qui:
unsigned int i 0;
unsigned size  v.size();
for (   ; i < size;   ++i) {
}
preferisco non dichiarare le variabili
dentro il for perche' non so cosa
dice lo standard ma lo scope delle variabili
dipende dal setting del compilatore che stai
usando.
Ciao
Gaetano.
-- 
Posted from 
nts-03.mm.eutelsat.org
 [194.214.173.15] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

usando.
lo standard dice che nel caso
for (int i = 0; ...) {
}
la variabile i č locale al ciclo (dentro le graffe)... anche se VC++
mi sembra che non segua questo standard...
cmq io scrivo i cicli appositamente cosě... perché la variabile i mi
serve solo dentro al ciclo... o forse č sbagliato?


 scansire altre classi tipo map... di nuovo: dico bene?
E' giusto usare l'operatore di disuguaglianza.
Ciao,
Nicola

 serve solo dentro al ciclo... o forse è sbagliato?
Non e' sbagliato ma meglio togliere ogni dubio, se proprio ti da fastidio
che "i" abbia uno scope esterno al ciclo a questo punto puoi usare
(che e' comunque brutto) un extra scope:
{
    int i;
    for (i  0;  .... ; .... ) {


mi sembra che non segua questo standard...
Infatti VC++ è stato scritto prima dello standard, VC++7 continuerà a
comportarsi come VC++6 per compilare correttamente il codice scritto
precedentemente ma sarà possibile attivare il comportamento standard
con un apposito switch.
In generale io consiglierei di usare nomi diversi per le variabili in
modo da evitare questi problemi.
-- 
                    Marco Barisione (ICQ 84277092)
Se sei interessato alla creazione di it.comp.lang (per i linguaggi di
programmazione senza un gruppo apposito e per i confronti fra i
linguaggi) partecipa alla discussione sul manifesto su it.news.gruppi.

usando.
Per la precisione credo che tu stia parlando di una nota non
conformità del VC++(esiste uno switch nel VC++6 che risolve il
problema, ma se lo attivi cominciano ad arrivare errori da tutte le
parti che ti obbligano a rimettere l'impostazione come settata per
default ed a tenerti una non conformità molto fastidiosa), ma lo
standard non da affatto ragione al comportamento di questo
compilatore.
Il Ghenio
-----
These are my parting words to you:
those who give up are doomed!
-----

 con un apposito switch.
Scelta deprecabile (IHMO).
Meglio lasciare di default il comportamento come previsto dallo
standard e attivare con uno switch il *compatible mode*
Ciao  Manlio Perillo

 da riga di comando come comportarsi.... :-(
 
no, no. Lo standard dice esplicitamente che in un caso come
        for(int i=0 ...)
lo scope della varaibile i e' quello del ciclo for. Se un compilatore 
non segue questa regola non e' standard (quindi il VC++ non e' 
standard; bella scoperta! ;-)
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

standard e attivare con uno switch il *compatible mode*
Evidentemente Microsoft aveva più a cuore far andare il codice scritto
per VC++6 anche se a dir la verità poteva fare in modo che aprendo un
progetto di VC++6 e (quindi convertendolo ad un progetto per VC++7)
venisse automaticamente abilitata lo switch per mantenere la
compatibilità.


 compatibilità.
Su questo argomento c'i sono almeno 300! (il ! sta per fattoriale, non
per esclamativo) messaggi sui gruppi MS. Con flame e controflame e
ragionamenti vari.
Quello che posso dirvi senza perdurare troppo l'OT è che il VC7 che sta
per essere rilasciato lascia parecchio a desiderare sotto molti punti di
vista. E' MOLTO più standard conforming di VC6 (vedi vecchi post) ma
molto meno di quanto sono oramai i concorrenti. Inoltre la conformità
non è "concentrata". Ovvero se setti certi switch è conforme sotto certi
aspetti, se ne setti altri lo è sotto altri ... ma perdi qualche cosa
sui primi etc. etc. Ammesso e non concesso che abbia senso parlare di
"più" conforme e "meno" conforme fra due confiurazioni che conformi non
sono, pare che la modalità maggiormente conforme sia ... quella che
genera pseudocodice per il runtime di .NET.
Le cose dovrebbero migliorare moltissimo nella versione successiva che
in un primo tempo avrebbe dovuto essere VC8 fra un 3 annetti circa ma
che stando ai vari segnali più o meno ufficiosi pare che sarà una 7.x
che uscirà fra un annetto circa.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

che uscirà fra un annetto circa.
Ah questo potrebbe portare VC++ ad essere più amato anche da chi vuole
programmare in C++ standard.
Hai qualche link su questo argomento?


 Hai qualche link su questo argomento?
Gli ultimi tre mesi di post su 
microsoft.public.dotnet.languages.vc
 e
alcuni messaggi anche nei mesi precedenti (a cominciare se non sbaglio
da febbraio in poi).
Cerca in qualche archive (guarda che si tratta di una marea di post:
praticamente ci sono state delle belle flame!).
Un aiuto nella selezione è se filtri i miei post, poi scarti quelli che
non c'entrano e da quelli restanti rifiltri in base al subject.
Due megatrhead abbastanza recenti che se non sbaglio ne parlavano
avevano come subject:
Re: Switching to Comeau
Re: How ISO standard is the C++ compiler ?
Se anche solo ti filtri fuori quelli dai post più recenti (da ferragosto
in poi) ti fai un'ideazza.


 uso il preincremento perche' e' piu' efficiente.
Ma se metti ++i non finisce che salti il primo elemento?
E perche' sarebbe piu' efficiente?
Grazie!
--
Gerolamo

 E perche' sarebbe piu' efficiente?
Non salti nessun elemento, perche' comunque la terza parte del for e'
eseguita *dopo* il corpo. il pre incremento e' piu' efficiente perche'
non deve costruire un oggetto temporaneo in cui salvare il valore
precedente da restituire.
Ciao,
Nicola

 E perche' sarebbe piu' efficiente?
Perche' appunto si salta il primo!!!!
Scherzavo ovviamente.
L'incremento (post fisso o pre fisso che sia) viene fatto per 
la prima volta alla fine del primo ciclo.
Per l'efficenza cerca su "google news" il thread
"Incremento e decremento" del 29/Maggio/2001
 e guarda la mia risposta data a:  DoNaTo.
PS. Io metterei nelle FAQ questa domanda: 
       "Perche' il preincremento in alcuni casi
        e' piu' efficiente ?"


 
Che ne diresti di mettere nella FAQ questa domanda
sempre che non ci sia gia ?


 precedente da restituire.
si, scusa la domanda stupida...
Grazie a tutti per le risposte!
--
Gerolamo