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