CGAL处理迭代器比较

时间:2016-02-09 09:46:02

标签: cgal

我在论坛上读到CGAL迭代器/循环器可以隐式地类型转换为相应的句柄。我应该能够使用迭代器/循环器“好像它们是把手”。如果我尝试比较它们,为什么会出现错误?这是一个例子:

typedef CGAL::Constrained_Delaunay_triangulation_2<K, Tds> CDT;
typedef CDT::Vertex_handle Vertex_handle;
typedef CDT::Vertex_iterator Vertex_iterator;
...
CDT cdt;
Vertex_handle va = cdt.insert(Point(0,0));
for(Vertex_iterator i=cdt.vertices_begin();...) {
  va=i;  /* Compiles Ok */
  if(va==i) { ... } /* Pages of Error messages */
}

此示例改编自CGAL Delaunay meshing demo

1 个答案:

答案 0 :(得分:1)

解决方案很简单......

for(Vertex_iterator i=cdt.vertices_begin();...) 
{
  va=i; /* Implicit dereferencing */
  /* Implicit deref. doesn't work, so use explicit dereferencing */       
  if(va==Vertex_handle(i)) { ... }
}