ループでvectorを変更する


vectorの反復器は無効になる可能性があるので、ループでvectorを変更する場合は、反復器の状態をタイムリーに変更することに注意してください.
	vector<int> vi{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	auto iter = vi.begin();

	while (iter != vi.end())
	{
		if (*iter % 2)
		{
			iter = vi.insert(iter, *iter);
			//       ,   insert     ,      iter  ,                     !!!
			iter += 2;
		}
		else
		{
			iter = vi.erase(iter);
			//           !!!       ,iter          !!!
		}
	}

注意!endが返す反復器を保存しないで!!!