Voglio cercare attraverso un vettore di coppie e per farlo..io sto facendo quanto segue:
vector<pair<double ,double> > vec_pairs;
for(vector<unsigned int>::size_type j = 0; j != vec_pairs.size(); j++ )
{
if(vec_pairs[j].first==12.6)
{
int z=7;
continue;
}
}
Comunque il mio problema è ... dopo averlo fatto ... mi sto bloccando in un loop infinito ... Qualcuno può aiutarmi a risolvere il problema
risposte:
0 per risposta № 1Prima di tutto, il codice che hai pubblicato funziona bene "così com'è".
L'unica ragione per cui un tale tipo di codice deve andare in loop infinito è quello di modificare j
all'interno del ciclo.
Se tu aumentare j
all'interno del circuito, probabilmente non rimarrai bloccato perché uscirai dalle obbligazioni e potresti avere il tuo codice in crash.
for(vector<unsigned int>::size_type j = 0; j != vec_pairs.size(); j++ )
{
if(vec_pairs[j].first==12.6)
{
j++;//You will go out of vector bonds and might get an error here.
continue;
}
}
Tuttavia, se fai qualcosa di simile:
for(vector<unsigned int>::size_type j = 0; j != vec_pairs.size(); j++ )
{
if(vec_pairs[j].first==12.6)
{
j--;//j is decreased each time you get in here, so you will be stuck on one element,
continue;
}
}
Allora resterai bloccato dentro, perché quando vai nel if
affermazione (per esempio, sull'elemento 7), j
diminuirà a 6, quindi lo farai continue
il cappio, j
aumenterà di nuovo a 7, andrai dentro il if
di nuovo, e così via.
0 per risposta № 2
Ho testato il tuo codice in codepad. Controllalo Qui! E sta funzionando bene. Controlla il valore della variabile j
durante il debug. Come disse SingerOftheFall, potrebbe essere decrementato o resettato da qualche parte. Può anche andare su un ciclo infinito se si aggiungono elementi all'interno del ciclo che aumentano il valore di vec_pairs.size()
e la condizione j != vec_pairs.size()
non sarà mai vero in quel caso. Non riesci a trovare nulla di sbagliato nel codice che hai dato.