CGAL 6.1 - STL Extensions for CGAL

Loading...
Searching...
No Matches
List of all members | Related Functions
CGAL::Dispatch_or_drop_output_iterator< V, O > Class Template Reference
Reference Manual » Iterators and Iterator/Circulator Adaptors

`#include <CGAL/iterator.h>`

## Inherits from

O.

## Definition

template<typename V, typename O>
class CGAL::Dispatch_or_drop_output_iterator< V, O >

The class `Dispatch_or_drop_output_iterator` defines an `OutputIterator` that contains a tuple of output iterators, and dispatches among those based on the type of the value type which is put in it.

Besides defining assignment for all parameters of `V` and for a tuple of type `V`, it is also defined for the types `std::variant<T...>` and `std::optional<std::variant<T...> >`, where `T...` must be a subset of the parameters of `V`. Should the `std::optional` be empty, it will be discarded.

Parameters

Template Parameters

  V | must be a `std::tuple<...>` of the types of values to be accepted and dispatched.
  O | must be a `std::tuple<...>` of the types of corresponding output iterators.

Is model of
  `OutputIterator`

File STL_Extension/Dispatch_output_iterator.cpp

#include <vector>
#include <CGAL/iterator.h>
#include <variant>
#include <optional>
int main()
{
std::vector<int> a;
std::vector<double> b;
std::vector<char> c;
typedef CGAL::Dispatch_output_iterator<
std::tuple<int, double, char>,
std::tuple<std::back_insert_iterator< std::vector<int> >,
std::back_insert_iterator< std::vector<double> >,
std::back_insert_iterator< std::vector<char> >
> > Dispatch;
Dispatch disp = CGAL::dispatch_output<int, double, char>(
std::back_inserter(a),
std::back_inserter(b),
std::back_inserter(c));
typedef std::variant<int, double, char> var;
var va = 23; var vb = 4.2; var vc = 'x';
// goes to a
*disp++ = va;
// goes to b
*disp++ = vb;
// goes to c
*disp++ = vc;
// goes to a
*disp++ = 42;
return 0;
}
CGAL::Dispatch_output_iterator
The class Dispatch_output_iterator defines an OutputIterator that contains a tuple of output iterator...
Definition: iterator.h:214

See also
  `CGAL::Dispatch_output_iterator<V,O>`

## Related Functions
(Note that these are not member functions.)
template<typename... V, typename... O>
Dispatch_or_drop_output_iterator< tuple< V... >, tuple< O... > > | dispatch_or_drop_output (O... o)

## Types
typedef V | Value_type_tuple
typedef O | Iterator_tuple

## Creation
| Dispatch_or_drop_output_iterator (I...o)
| Constructor taking all the output iterators.
const Iterator_tuple & | get_iterator_tuple () const
| returns a reference to the tuple of output iterators.

## Friends And Related Function Documentation

## ◆ dispatch_or_drop_output()

template<typename... V, typename... O>

Dispatch_or_drop_output_iterator< tuple< V... >, tuple< O... > > dispatch_or_drop_output | ( | O... | o | ) |
| related

Returns
  a `Dispatch_or_drop_output_iterator` constructed from the arguments.