mirror of https://github.com/CGAL/cgal
106 lines
3.9 KiB
TeX
106 lines
3.9 KiB
TeX
% +------------------------------------------------------------------------+
|
|
% | 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<Traits,HalfedgeDSItems,Alloc>}
|
|
\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<Traits,Items,Alloc>}
|
|
|
|
\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<Traits,Items,Alloc>}, 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<Traits>}\\
|
|
\ccRefIdfierPage{CGAL::HalfedgeDS_items_decorator<HDS>}\\
|
|
\ccRefIdfierPage{CGAL::HalfedgeDS_decorator<HDS>}\\
|
|
\ccRefIdfierPage{CGAL::HalfedgeDS_const_decorator<HDS>}
|
|
|
|
|
|
\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
|
|
% +------------------------------------------------------------------------+
|