我有一个简单的问题:如果我在迭代器到达C ++ STL容器的end()(最后一个)时继续递增,会发生什么? e.g。
set<int> intSet;
intSet.insert(0);
intSet.insert(1);
intSet.insert(2);
set<int>::iterator setIter = intSet.begin();
for (int i = 0; i < 10; i++)
setIter++;
那么,setIter总是会是intSet.end()吗?或者这是一个未定义的行为(可以给我不一致的垃圾)?
答案 0 :(得分:1)
它将在VS2013中抛出运行时错误。但是,它不会在G ++(ideone)中。但是,如果您使用它,它是未定义的行为。它绝对不等于intSet.end()
答案 1 :(得分:0)