mirror of https://github.com/CGAL/cgal
24 lines
1.0 KiB
TeX
24 lines
1.0 KiB
TeX
% C++ and generic programming
|
|
|
|
Before using CGAL, it is mandatory to be familiar with C++ and the
|
|
\italic{generic programming paradigm}. The latter features the notion
|
|
of C++ class templates and function templates, which is at the corner
|
|
stone of all features provided by CGAL.\\
|
|
|
|
% STL
|
|
|
|
An example illustrating generic programming is the Standard Template
|
|
Library (STL)~\cite{ms-stl-96}. Generality and flexibility is achieved
|
|
with a set of \italic{concepts}, where a concept is a well defined set
|
|
of requirements. One of them is the \italic{iterator} concept, which
|
|
allows both referring to an item and traversing a sequence of
|
|
items. Those items are stored in a data structure called
|
|
\italic{container} in STL. Another concept, so-called
|
|
\italic{circulator}, allows traversing some circular sequences. They
|
|
share most of the requirements with iterators, except the lack of
|
|
past-the-end position in the sequence. Since CGAL is strongly inspired
|
|
from the genericity of STL, it is important to become familiar with
|
|
its concepts before starting using it.
|
|
|
|
|