\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - Halfedge Data Structures

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
CGAL::HalfedgeDS_list< Traits, HalfedgeDSItems, Alloc > Class Template Reference
Halfedge Data Structures

`#include <CGAL/HalfedgeDS_list.h>`

## Definition

The class `HalfedgeDS_list` is a model for the `HalfedgeDS` concept.

`HalfedgeDS_list` is a list-based representation with bidirectional iterators that supports removal.

Is Model Of:
  `HalfedgeDS<Traits,Items,Alloc>`

See Also
  `CGAL::HalfedgeDS_default`
  `CGAL::HalfedgeDS_vector`
  `HalfedgeDSItems`
  `CGAL::Polyhedron_3<Traits>`
  `CGAL::HalfedgeDS_items_decorator<HDS>`
  `CGAL::HalfedgeDS_decorator<HDS>`
  `CGAL::HalfedgeDS_const_decorator<HDS>`

Implementation

`HalfedgeDS_list` uses internally the `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.

`CGAL_ALLOCATOR(int)` is used as default argument for the `Alloc` template parameter.

Examples:
  HalfedgeDS/hds_prog_compact2.cpp.

## Types
typedef bidirectional_iterator_tag | iterator_category
typedef CGAL::Tag_true | Supports_removal

## Operations
Besides operations required from the concept `HalfedgeDS<Traits,Items,Alloc>`, this class supports additionally:
void | vertices_splice (Vertex_iterator target, Self &source, Vertex_iterator first, Vertex_iterator last)
| inserts elements in the range [`first, last`) before position `target` and removes the elements from `source`. More...
void | halfedges_splice (Halfedge_iterator target, Self &source, Halfedge_iterator first, Halfedge_iterator last)
| inserts elements in the range [`first, last`) before position `target` and removes the elements from `source`. More...
void | faces_splice (Face_iterator target, Self &source, Face_iterator first, Face_iterator last)
| inserts elements in the range [`first, last`) before position `target` and removes the elements from `source`. More...

## Member Function Documentation

template<typename Traits , typename HalfedgeDSItems , typename Alloc >

void CGAL::HalfedgeDS_list< Traits, HalfedgeDSItems, Alloc >::faces_splice | ( | Face_iterator | target,
|  | Self & | source,
|  | Face_iterator | first,
|  | Face_iterator | last
| ) |  |

inserts elements in the range [`first, last`) before position `target` and removes the elements from `source`.

It takes constant time if `&source == &``hds`; otherwise, it takes linear time in the size of the range.

Precondition
  [`first, last`) is a valid range in `source`. `target` is not in the range [`first, last`).

template<typename Traits , typename HalfedgeDSItems , typename Alloc >

void CGAL::HalfedgeDS_list< Traits, HalfedgeDSItems, Alloc >::halfedges_splice | ( | Halfedge_iterator | target,
|  | Self & | source,
|  | Halfedge_iterator | first,
|  | Halfedge_iterator | last
| ) |  |

inserts elements in the range [`first, last`) before position `target` and removes the elements from `source`.

It takes constant time if `&source == &``hds`; otherwise, it takes linear time in the size of the range.

Precondition
  [`first, last`) is a valid range in `source`. `target` is not in the range [`first, last`).

template<typename Traits , typename HalfedgeDSItems , typename Alloc >

void CGAL::HalfedgeDS_list< Traits, HalfedgeDSItems, Alloc >::vertices_splice | ( | Vertex_iterator | target,
|  | Self & | source,
|  | Vertex_iterator | first,
|  | Vertex_iterator | last
| ) |  |

inserts elements in the range [`first, last`) before position `target` and removes the elements from `source`.

It takes constant time if `&source == &``hds`; otherwise, it takes linear time in the size of the range.

Precondition
  [`first, last`) is a valid range in `source`. `target` is not in the range [`first, last`).