\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - STL Extensions for CGAL

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Related Functions
CGAL::Filter_iterator< Iterator, Predicate > Class Template Reference
Iterators and Iterator/Circulator Adaptors

`#include <CGAL/iterator.h>`

## Definition

The iterator adaptor `Filter_iterator` acts as a filter on a given range.

Whenever the iterator is in- or decremented, it ignores all iterators for which the given `Predicate` is true. The iterator category is the same as for `Iterator`.

Attention
  Boost also provides the same functionality via the `boost::filter_iterator` class. Unfortunately, the semantics chosen for accepting or rejecting elements based on the predicate's result are opposite as the semantic chosen here. What is more, the argument of the predicate is different: the predicate used with `boost::filter_iterator` must take the value type of the iterator, as argument, and not the iterator itself.

Template Parameters

  Iterator | must be a model of `ForwardIterator`
  Predicate | must be a functor `Iterator` \( \rightarrow\) `bool`

## Related Functions
(Note that these are not member functions.)
template<class Iterator , class Predicate >
Filter_iterator< Iterator, Predicate > | filter_iterator (Iterator e, const Predicate &p, Iterator c=e)
| Constructs `Filter_iterator<Iterator, Predicate>(e, p, c)`.

## Creation
| Filter_iterator ()
| Filter_iterator (Iterator e, Predicate p, Iterator c=e)
| creates an iterator which filters values according to `p`. More...

## Constructor & Destructor Documentation

template<typename Iterator , typename Predicate >

CGAL::Filter_iterator< Iterator, Predicate >::Filter_iterator | ( | Iterator | e,
|  | Predicate | p,
|  | Iterator | c = `e`
| ) |  |

creates an iterator which filters values according to `p`.

Initializes by taking the first valid iterator (according to `p`), starting at `c`, and stopping at `e` if none is found.