У меня есть CGAL::Polygon_2<Kernel>
и итерация по его вершинам с вершиной CGAL circulator
.В документации CGAL я не могу найти никакой информации о том, как правильно использовать функцию стирания.Удаление в середине не проблема, но как обращаться с циркулятором, когда удаляется первый его элемент?
Наивный подход стирания итератора работает только в первом случае,во втором случае цикл завершился после одной итерации.
// 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
указывает на ранее второй элемент / теперь первый элемент после стирания первого?
Как можноЯ справлюсь с этим делом?Спасибо!