1.
for(list<Geometry_line>::iterator it = G.begin(); it != G.end();) {
if(IsLineCrossed(*it, l)) {
G.erase(it);
} else {
it++;
}
}
调试时出现iterator not incrementable。
原因:当容器执行了一次earse操作之后,原来用来遍历的迭代器就失效了,其行为是不可预测的,具体情况由实现决定。同时earse操作会返回一个指向容器中下一个元素的迭代器,如果想继续遍历,就得用返回的迭代器继续操作。