Получение vertex_handle из edge_iterator

Мне довольно сложно получить vertex_handle для каждой из конечных точек ребра в триангуляции Делоне. Поскольку я несколько часов бился об это головой, я подумал, может быть, кто-нибудь из вас, ребята, может помочь мне с этой очевидной тривиальной проблемой:

#include <iostream>

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>

using namespace std;

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Triangulation;
typedef Triangulation::Point Point;
typedef Triangulation::Edge_iterator Edge_iterator;
typedef Triangulation::Vertex_handle Vertex;

int main(){
  Point p;
  Triangulation t;
  while(cin >> p)
    t.insert(p);

  // Iterate over edges
  for(Edge_iterator ei=t.finite_edges_begin();ei!=t.finite_edges_end(); ei++){
    // Get a vertex from the edge
    Vertex vs = ei->source();
  }
}

Согласно документации, разыменовывающей Edge_iterator, я должен получить Edge_handle, а Edge_handle должен иметь членов source () и target (), чтобы просто получить конечные точки, но он не компилируется и кажется неправильным. Разъединение, как описано выше, даст мне пару <>, в которой нет этих функций-членов.

Есть идеи, что я делаю не так?

9
задан Jens Gustedt 29 January 2011 в 16:38
поделиться