Законно ли добавлять элементы в предварительно выделенный вектор в цикле for на основе этого диапазона?
Я использую компилятор Visual Studio 2015 Update 1 C ++ и этот фрагмент кода:
#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;
}
Релизная версия работает нормально, но отладочная версия выдаетvector iterators incompatible
сообщение об ошибке. Это почему?
Прежде чем пометить его как дублирующий вопросДобавление элементов в вектор во время цикла на основе диапазона c ++ 11пожалуйста, прочитайте мой ответhttps://stackoverflow.com/a/35467831/219153 с аргументами об обратном.