#include <CGAL/Pm_with_intersections.h>
Note that the modifying insertion functions override the inherited functions. The insertion functions of Planar_map_with_intersections_2<Planar_map> handle general curves, including non$$xmonotone curves, pairwise overlapping, or pairwise intersecting curves, and are slower than their counterparts of the CGAL::Planar_map_2<Dcel,Traits> base class. $$Xmonotone curves that are pairwise disjoint in their interiors can be inserted efficiently through a subset of insertion functions listed below. These functions begin with the prefix non_intersecting.

 
creates an empty planar map with the default point location strategy.
 
 
creates an empty planar map with *pl as the point location strategy.
 
 
creates an empty planar map with tr as the traits class and *pl as the point location strategy.

advanced 
The following functions do not check for intersections. They simply call the Planar_map_2 corresponding insert functions. Therefore, they are more efficient than their counterpart insertfunctions. but should be used with care (see also for details including the full list of preconditions).

 
inserts the curve cv into the
map. non_intersecting_insert() returns a handle to a new
halfedge directed in the same way as the curve cv. Precondition: cv has no proper intersection with any curve of the map.  
 

 
iterates through a given range of curves, inserting the curves into
the map. begin and end are input iterators that point to
the first curve and pasttheend curve of the range
respectively. non_intersecting_insert() returns a handle to a
new halfedge directed in the same way as the last curve in the range. Precondition: the curves of the map do not intersect the any of the curves in the given range in its interior, and all curves in the range are disjoint in their interior.  

 
inserts the curve cv as a new inner component of the face
f. non_intersecting_insert_in_face_interior() returns a
handle to a new halfedge directed in the same way as cv. Precondition: cv has no proper intersection with any curve of the map.  

 
inserts the curve cv into the map. One endpoint of cv
is the point of the target vertex, v, of the given halfedge
h. non_intersecting_insert_from_vertex returns a handle
to a new halfedge that has v as its source vertex. The
returened twin halfedge is inserted immediately after h in the
circular list of halfedges that share the same target vertex
v. Precondition: cv has no proper intersection with any curve of the map.  

 
inserts the curve cv into the map. The two endpoints of
cv are held by the two target vertices v1 and v2
of h1 and h2
respectively. non_intersecting_insert_at_vertices() returns a
handle to a new halfedge, that has v1 and v2 as its
source and target vertices respectively. The returened halfedge is
inserted immediately after h1 in the circular list of
halfedges that share the same target vertex v1. Its twin
halfedge is inserted immediately after h2 in the circular list
of halfedges that share the same target vertex v2. Precondition: cv has no proper intersection with any curve of the map.  

 
inserts the curve cv into the map. One endpoint of cv
is the point of the given vertex v, that is already in the
map. non_intersecting_insert_from_vertex returns a handle to a
new halfedge that has v as its source vertex. Precondition: cv has no proper intersection with any curve of the map.  

 
inserts the curve cv into the map. The two endpoints of
cv are held by the two given vertices v1 and v2
respectively, that are already in the
map. non_intersecting_insert_at_vertices() returns a handle to
a new halfedge, that has v1 and v2 as its source and
target vertices respectively. Precondition: cv has no proper intersection with any curve of the map. 
advanced 