У меня довольно сложно получить vertex_handle для каждой из конечных точек ребра в триангуляции Delaunay. Так как я забил голову против этого в течение нескольких часов, я думал, что, может быть, один из вас, ребята могли бы мне помочь с этим, по-видимому тривиальной проблемой:Получение vertex_handle от edge_iterator
#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(), чтобы просто получить конечные точки, но он не будет компилироваться и, кажется, ошибочен. Derefencing, как и выше, даст мне пару <>, которая не имеет этих функций-членов.
Любая идея, что я делаю неправильно?
Куда компиляция не работает? – payne
Это то, что (ei *) имеет пару типа, у которого явно нет источника(). – cdecker