É legal adicionar elementos a um vetor pré-alocado em um loop for baseado em intervalo sobre esse vetor?
Estou usando o compilador C ++ da Atualização 1 do Visual Studio 2015 e esse trecho 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;
}
A versão de lançamento funciona bem, mas a versão de depuração produzvector iterators incompatible
mensagem de erro. Por que é que?
Antes de sinalizá-lo como uma pergunta duplicada paraAdicionar elementos a um vetor durante o loop baseado em intervalo c ++ 11leia minha respostahttps://stackoverflow.com/a/35467831/219153 com argumentos em contrário.