Стирание первого элемента при итерации с циркулятором CGAL - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть 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 указывает на ранее второй элемент / теперь первый элемент после стирания первого?

Как можноЯ справлюсь с этим делом?Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2019

Использование --start прямо перед тем, как do будет работать.

...