% +------------------------------------------------------------------------+ % | Reference manual page: HalfedgeDS_list.tex % +------------------------------------------------------------------------+ % | 22.03.1999 Lutz Kettner % | Package: HalfedgeDS % | \RCSdef{\RCSHalfedgeDSlistRev}{$Id$} \RCSdefDate{\RCSHalfedgeDSlistDate}{$Date$} % +------------------------------------------------------------------------+ \ccRefPageBegin %%RefPage: end of header, begin of main body % +------------------------------------------------------------------------+ \begin{ccRefClass}{HalfedgeDS_list} \ccRefLabel{CGAL::HalfedgeDS_list} \ccDefinition The class \ccRefName\ is a model for the \ccc{HalfedgeDS} concept. \ccRefName\ is a list-based representation with bidirectional iterators that supports removal. \ccInclude{CGAL/HalfedgeDS_list.h} \ccIsModel \ccRefConceptPage{HalfedgeDS} \ccTypes \ccThree{typedef bidirectional_iterator_tag;}{Supports_removal;;}{} \ccTypedef{typedef bidirectional_iterator_tag iterator_category;}{} \ccGlue \ccTypedef{typedef CGAL::Tag_true Supports_removal;}{} \ccOperations Besides operations required from the concept \ccc{HalfedgeDS}, this class supports additionally: \ccCreationVariable{hds} \ccThree{void}{hds.vertices}{} \ccMethod{void vertices_splice( Vertex_iterator target, Self &source, Vertex_iterator first, Vertex_iterator last);} {inserts elements in the range [\ccc{first, last}) before position \ccc{target} and removes the elements from \ccc{source}. It takes constant time if \ccc{&source == &}\ccVar; otherwise, it takes linear time in the size of the range. \ccPrecond [\ccc{first, last}) is a valid range in \ccc{source}. \ccc{target} is not in the range [\ccc{first, last}).} \ccMethod{void halfedges_splice( Halfedge_iterator target, Self &source, Halfedge_iterator first, Halfedge_iterator last);} {inserts elements in the range [\ccc{first, last}) before position \ccc{target} and removes the elements from \ccc{source}. It takes constant time if \ccc{&source == &}\ccVar; otherwise, it takes linear time in the size of the range. \ccPrecond [\ccc{first, last}) is a valid range in \ccc{source}. \ccc{target} is not in the range [\ccc{first, last}).} \ccMethod{void faces_splice( Face_iterator target, Self &source, Face_iterator first, Face_iterator last);} {inserts elements in the range [\ccc{first, last}) before position \ccc{target} and removes the elements from \ccc{source}. It takes constant time if \ccc{&source == &}\ccVar; otherwise, it takes linear time in the size of the range. \ccPrecond [\ccc{first, last}) is a valid range in \ccc{source}. \ccc{target} is not in the range [\ccc{first, last}).} \ccSeeAlso \ccRefIdfierPage{CGAL::HalfedgeDS_default}\\ \ccRefIdfierPage{CGAL::HalfedgeDS_vector}\\ \ccRefConceptPage{HalfedgeDSItems}\\ \ccRefIdfierPage{CGAL::Polyhedron_3}\\ \ccRefIdfierPage{CGAL::HalfedgeDS_items_decorator}\\ \ccRefIdfierPage{CGAL::HalfedgeDS_decorator}\\ \ccRefIdfierPage{CGAL::HalfedgeDS_const_decorator} \ccImplementation \ccRefName\ uses internally the \ccc{CGAL::In_place_list} container class. The copy constructor and the assignment operator need $O(n)$ time with $n$ the total number of vertices, halfedges, and faces. The former suboptimal implementation with an $O(n \log n)$ runtime has been replaced with a faster implementation based on hashing for the pointer lookup. \ccc{CGAL_ALLOCATOR(int)} is used as default argument for the \ccc{Alloc} template parameter. \end{ccRefClass} % % +------------------------------------------------------------------------+ %%RefPage: end of main body, begin of footer \ccRefPageEnd % EOF % +------------------------------------------------------------------------+