Sto attraversando un vettore con auto (codice allegato). Mentre sto attraversando, aggiungo anche alcuni elementi sul retro. Non mi aspettavo l'uscita che ho ottenuto.Comportamento insolito con auto mentre si attraversa un vettore dinamico
#include <iostream>
#include <vector>
using namespace std;
vector <int> dynamic_vector;
void access()
{
for (auto i : dynamic_vector) {
if (i == 3) {
dynamic_vector.push_back(4);
dynamic_vector.push_back(5);
}
cout << i << endl;
}
}
int main() {
dynamic_vector.push_back(1);
dynamic_vector.push_back(2);
dynamic_vector.push_back(3);
access();
return 0;
}
uscita:
1
2
3
mi aspettavo tutti i numeri da 1 a 5 sarà ottenere stampati. Non sono in grado di capire come attraversare con l'auto funziona?
Re * Mi aspettavo che tutti i numeri da 1 a 5 vengano stampati * - Mi aspetterei demoni nasali, me stesso. Questo è un comportamento indefinito, ei demoni nasali sono il risultato canonico di invocare un comportamento indefinito. –