我发现这个代码有一个分段错误:
auto face_iterator = m.faces_around_target(m.halfedge(v3));
for (auto i=face_iterator.begin(); i!=face_iterator.end(); i++) {
m.remove_face(*i);
}根据我对文档的理解,只要我不调用collect_garbage,脸就只被标记为已删除,因此不会更改索引。这是怎么回事?
谢谢。
发布于 2017-08-25 07:08:59
脸确实被简单地标记为已删除,但是它的迭代器由于删除而失效(请记住迭代器只对未删除的元素执行)。
如文档中所述:在不调整任何内容的情况下,从halfedge数据结构中移除f面。您需要使用更高级别的函数,如CGAL::Euler::remove_face()。
https://stackoverflow.com/questions/45875622
复制相似问题