考虑以下代码:
std::set<int> s;
auto it = s.begin();
s.insert(1);
s.insert(2);
std::cout << *it << std::endl;
输出(至少对我而言)是2. 这里发生了什么事?it我取消引用它时的状态是什么?
我知道当我调用begin()一个空集时,我得到一个等效于end(). 我也知道调用insertaset不会使其迭代器无效。end()即使我现在已将元素插入到中,迭代器是否以某种方式保持等效set,所以现在我得到了未定义的行为?这是标准定义的吗?