Законно ли добавлять элементы в предварительно выделенный вектор в цикле 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 с аргументами об обратном.

Ответы на вопрос(1)

Ваш ответ на вопрос