consider this:
// set_iterator.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <iostream>
#include <set>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
set<int> a1;
set<int> a2;
a1.insert(3);
a1.insert(4);
a1.insert(5);
a2.insert(1);
a2.insert(2);
a2.insert(6);
set<int>::iterator iter;
int x = 0;
for (iter = a1.begin(); iter != a1.end(); ++iter)
{
if (x == 0) {
x = 1;
a1.insert(a2.begin(), a2.end());
}
cout << *iter << endl;
}
system("pause");
return 0;
}
goal is to visit each element of the set exactly once. i think the iterator is not valid after we insert elements into a1.
output is 3 4 5 6
1,2 are not printed.
how do we code such a situation.