Я столкнулся с проблемой, с которой, я надеюсь, столкнулись некоторые другие, потому что я не могу найти выход!
У меня есть регулярная триангуляция в CGAL, в которой я хочу вставить некоторые взвешенные точки с информацией std::pair<myweightpoint, myinfo>
один за другим и получить ручку к вершине (Vertex_handle
) как только он вставлен! Дело в том, что такой функции нет. Существует несколько функций для вставки:
Vertex_handle
Regular_triangulation::insert
( const Weighted_point & p ) ;
Это возвращает Vertex_handle
это круто, но не берет взвешенные точки с информацией, что очень важно для меня и что я делаю с этими вершинами.
std::ptrdiff_t
Regular_triangulation::insert
( WeightedPointWithInfoInputIterator first, WeightedPointWithInfoInputIterator last ) ;
Который позволяет мне вставлять некоторые взвешенные точки с информацией (что хорошо), но не дает мне ручки для вставленной вершины. Более того, поскольку я вставляю точки по одному, сейчас я делаю такие вещи:
v_wpoints.resize(1) ;
v_wpoints[0] = std::make_pair(myweightpoint, myinfo) ;
rt.insert(v_wpoints.begin(), v_wpoints.end()) ;
который кажется действительно грязным. Итак, мои вопросы: почему нет такой функции:
Vertex_handle Regular_triangulation::insert( const Weighted_point_with_info & p ) ;
и как я могу сделать, чтобы вставить взвешенную точку с информацией в регулярной триангуляции и получить ручку для вставленной вершины.
Большое спасибо.
Что вы можете сделать, это:
Vertex_handle v = rt.insert(wp);
v->info()=the_info;