CGAL::Triple<T1, T2, T3>

Definition

The Triple class is an extension of std::pair. Triple<T1, T2, T3> is a heterogeneous triple: it holds one object of type T1, one of type T2, and one of type T3. A Triple<T1, T2, T3> is much like a container, in that it "owns" its elements. It is not actually a model of container, though, because it does not support the standard methods (such as iterators) for accessing the elements of a container.

This class is NOT RECOMMENDED anymore. We recommend that you use CGAL::cpp0x::tuple or CGAL::cpp0x::array instead for new uses.

#include <CGAL/utility.h>

Requirements

T1, T2 and T3 must be Assignable. Additional operations have additional requirements.

Types

typedef T1 first_type;
typedef T2 second_type;
typedef T3 third_type;

Variables

T1 first; first element. Please access it using get<0>().
T2 second; second element. Please access it using get<1>().
T3 third; third element. Please access it using get<2>().

Creation

Triple<T1, T2, T3> t;
introduces a triple using the default constructor of the three elements.


Triple<T1, T2, T3> t ( T1 x, T2 y, T3 z);
constructs a triple such that first is constructed from x, second is constructed from y, and third is constructed from z.


template <class U, class V, class W>
Triple<T1, T2, T3> t ( U u, V v, W w);
constructs a triple such that first is constructed from u, second is constructed from v, and third is constructed from w.
Requirement: Proper conversion operators exist from U to T1, V to T2, and W to T3.

template <int i>
T t.get () Gives access to first, second or third whenever i is 0, 1 or 2, via a, potentially const, reference. Note: T stands for T1, T2 or T3 depending on i.

template <class T1, class T2, class T3>
bool x < y The comparison operator. It uses lexicographic comparison: the return value is true if the first element of x is less than the first element of y, and false if the first element of y is less than the first element of x. If neither of these is the case, then it returns true if the second element of x is less than the second element of y, and false if the second element of y is less than the second element of x. If neither of these is the case, then it returns the result of comparing the third elements of x and y. This operator may only be used if T1, T2 and T3 define the comparison operator.

template <class T1, class T2, class T3>
bool x == y The equality operator. The return value is true if and only the first elements of x and y are equal, the second elements of x and y are equal, and the third elements of x and y are equal. This operator may only be used if T1, T2 and T3 define the equality operator.

template <class T1, class T2, class T3>
Triple<T1, T2, T3> make_triple ( T1 x, T2 y, T3 z) Equivalent to Triple<T1, T2, T3>(x, y, z).

template <class T1, class T2, class T3>
Triple<T1, T2, T3> make_tuple ( T1 x, T2 y, T3 z) Equivalent to Triple<T1, T2, T3>(x, y, z).