【发布时间】:2019-08-23 22:11:16
【问题描述】:
我有一个 CGAL::Polygon_2<Kernel> 并使用 CGAL 顶点 circulator 迭代它的顶点。在 CGAL 文档中,我找不到有关如何正确使用擦除功能的任何信息。
中间删除没问题,但是当循环器的第一个元素被删除时如何处理呢?
天真的iterator erasing approach只在第一种情况下有效,在第二种情况下,循环在一次迭代后结束。
// p is of type CGAL::Polygon_2<Kernel>
auto ci = p.vertices_circulator();
auto start = ci;
int i = 0;
do {
if (i == 0) {
ci = p.erase(ci);
} else {
++ci;
}
++i;
} while (ci != start);
这意味着start 指向以前的第二个元素/现在删除第一个元素后的第一个元素?
我该如何处理这种情况? 谢谢!
【问题讨论】: