A DCEL (Doubly Connected Edge List) consists of vertices V, edges E, facets F and an incidence relation on them. Each edge is represented by two halfedges with opposite orientations. A DCEL serves as an interface for the Topological_map<Dcel> so a model of it must be provided as a template parameter. The predefined DCEL class implementation described in the next section can be used as a starting point for building one's own DCEL class. (The naming conventions were chosen to comply with those of the Halfedge_data_structure.)
A model for the TopologicalMapDcel concept must provide the following types and operations. (In addition to the requirements here, the local types Vertex,Halfedge and Face must be models of the concepts TopologicalMapDcelVertex, TopologicalMapDcelHalfedge and TopologicalMapDcelFace respectively.)
 
vertex type.
 
 
halfedge type.
 
 
face type.
 
 
type for size values.
 
 
a bidirectional iterator over the
vertices. Its valuetype is
Vertex.
 
 
a bidirectional iterator over the
halfedges. Its valuetype is
Halfedge.
 
 
a bidirectional iterator over the
faces. Its valuetype is
Face.

 
constructs an
empty DCEL with one unbouned face.


 
number of vertices.  

 
number of halfedges (always even).  

 number of faces. 
The following operations have an equivalent const operations such as Vertex_const_iterator vertices_begin(); etc.
The following operations allocate a new element of the respective type. Halfedges are always allocated in pairs of opposite halfedges. The twin pointers are automatically set.
Pm_dcel<V,H,F>