¿Es legal agregar elementos a un vector preasignado en un bucle for basado en rango sobre ese vector?
Estoy usando el compilador de Visual Studio 2015 Update 1 C ++ y este fragmento de código:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v{3, 1, 4};
v.reserve(6);
for (auto e: v)
v.push_back(e*e);
for (auto e: v)
cout << e << " ";
return 0;
}
La versión de lanzamiento funciona bien, pero la versión de depuración producevector iterators incompatible
mensaje de error. ¿Porqué es eso?
Antes de marcarlo como una pregunta duplicada paraAgregar elementos a un vector durante el ciclo basado en rango c ++ 11, por favor lee mi respuestahttps://stackoverflow.com/a/35467831/219153 con argumentos en contrario.