首先,我使用set::lower_bound
来查找内容,然后我需要在两个方向上检查该值的某些邻居。我的代码最终处于无限循环中,我认为这可能是由于此后的奇怪行为:
idx = set.lower_bound(val);
++idx;
while(idx != set.end() && /*...*/)
{
/*...*/
idx++;
}
我们假设lower_bound返回set::end
。我想在增加set::end
之后会发生一些奇怪的事情,而循环则会进入长征之旅:)但我不确定并对此感到好奇。
答案 0 :(得分:5)
增加end-iterator是未定义的行为。不要这样做。