CGAL 6.0 - Classification
|
#include <CGAL/Classification/Feature_set.h>
sets of features (see Feature_base
) used as input by classification algorithms.
This class handles both the instantiation, the addition and the deletion of features.
Public Types | |
using | const_iterator = unspecified_type |
A random access constant iterator with value type Feature_handle . | |
using | iterator = unspecified_type |
A random access iterator with value type Feature_handle . | |
Constructor | |
Feature_set () | |
creates an empty feature set. | |
Modifications | |
template<typename Feature , typename ... T> | |
Feature_handle | add (T &&... t) |
instantiates a new feature and adds it to the set. | |
bool | remove (Feature_handle feature) |
removes a feature. | |
void | clear () |
removes all features. | |
Parallel Processing | |
void | begin_parallel_additions () |
initializes structures to compute features in parallel. | |
void | end_parallel_additions () |
waits for the end of parallel feature computation and clears dedicated data structures afterwards. | |
Access | |
const_iterator | begin () const |
iterator | begin () |
const_iterator | end () const |
iterator | end () |
std::size_t | size () const |
returns how many features are defined. | |
Feature_handle | operator[] (std::size_t i) const |
returns the \(i^{th}\) feature. | |
Feature_handle CGAL::Classification::Feature_set::add | ( | T &&... | t | ) |
instantiates a new feature and adds it to the set.
If several calls of add()
are surrounded by begin_parallel_additions()
and end_parallel_additions()
, they are computed in parallel. They are still inserted in the specified order in the feature set (the first call of add()
creates a feature at index 0, the second at index 1, etc.).
Feature | type of the feature, inherited from Feature_base . |
T | types of the parameters of the feature's constructor. |
t | parameters of the feature's constructor. |
void CGAL::Classification::Feature_set::begin_parallel_additions | ( | ) |
initializes structures to compute features in parallel.
If the user wants to add features in parallel, this function should be called before making several calls of add()
. After the calls of add()
, end_parallel_additions()
should be called.
add()
are passed by reference and that new threads are started if begin_parallel_additions()
is used, it is highly recommended to always call begin_parallel_additions()
, add()
and end_parallel_additions()
within the same scope, to avoid keeping references to temporary objects that might be deleted before the thread has terminated.end_parallel_additions()
void CGAL::Classification::Feature_set::end_parallel_additions | ( | ) |
waits for the end of parallel feature computation and clears dedicated data structures afterwards.
If the user wants to add features in parallel, this function should be called after begin_parallel_additions()
and several calls of add()
.
begin_parallel_additions()
bool CGAL::Classification::Feature_set::remove | ( | Feature_handle | feature | ) |
removes a feature.
feature | the handle to feature type that must be removed. |
true
if the feature was correctly removed, false
if its handle was not found.