## CGAL::HalfedgeDS_list<Traits,HalfedgeDSItems,Alloc>

### Definition

The class HalfedgeDS_list<Traits,HalfedgeDSItems,Alloc> is a model for the HalfedgeDS concept. HalfedgeDS_list<Traits,HalfedgeDSItems,Alloc> is a list-based representation with bidirectional iterators that supports removal.

#include <CGAL/HalfedgeDS_list.h>

### Is Model for the Concept

HalfedgeDS<Traits,Items,Alloc>

### Types

typedef bidirectional_iterator_tag
| iterator_category;
typedef CGAL::Tag_true
| Supports_removal;

### 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<Traits,HalfedgeDSItems,Alloc> 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. The former suboptimal implementation with an O(n logn) runtime has been replaced with a faster implementation based on hashing for the pointer lookup.

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