aGrUM 3.1.1
a C++ library for (probabilistic) graphical models
gum::BijectionIterator< T1, T2 > Class Template Reference

Unsafe iterators for bijection. More...

#include <agrum/base/core/bijection.h>

Public Types

using iterator_category = std::forward_iterator_tag
 types for STL compliance
using type1_type = T1
 types for STL compliance
using type1_reference = T1&
 types for STL compliance
using type1_const_reference = const T1&
 types for STL compliance
using type1_pointer = T1*
 types for STL compliance
using type1_const_pointer = const T1*
 types for STL compliance
using type2_type = T2
 types for STL compliance
using type2_reference = T2&
 types for STL compliance
using type2_const_reference = const T2&
 types for STL compliance
using type2_pointer = T2*
 types for STL compliance
using type2_const_pointer = const T2*
 types for STL compliance
using difference_type = std::ptrdiff_t
 types for STL compliance

Public Member Functions

Constructors/destructors
 BijectionIterator () noexcept
 Default constructor.
 BijectionIterator (const Bijection< T1, T2 > &bijection)
 Default constructor.
 BijectionIterator (const BijectionIterator< T1, T2 > &from)
 Copy constructor.
 BijectionIterator (BijectionIterator< T1, T2 > &&from) noexcept
 Move constructor.
 ~BijectionIterator () noexcept
 Class destructor.
Operators
BijectionIterator< T1, T2 > & operator= (const BijectionIterator< T1, T2 > &toCopy)
 Copy operator.
BijectionIterator< T1, T2 > & operator= (BijectionIterator< T1, T2 > &&toMove) noexcept
 Move operator.
BijectionIterator< T1, T2 > & operator++ () noexcept
 Go to the next association, if it exists.
BijectionIterator< T1, T2 > & operator+= (Size nb) noexcept
 Moves the iterator by nb elements.
BijectionIterator< T1, T2 > operator+ (Size nb) noexcept
 Return a new iterator.
bool operator!= (const BijectionIterator< T1, T2 > &toCompare) const noexcept
 Inequality operator.
bool operator== (const BijectionIterator< T1, T2 > &toCompare) const noexcept
 Equality operator.
Accessors/Modifiers
const T1 & first () const
 Returns the first element of the current association.
const T2 & second () const
 Returns the second element of the current association.

Private Types

using Getter = BijectionIteratorGet< std::is_scalar< T1 >::value && std::is_scalar< T2 >::value >
 Dummy classes that will enable discriminate without overhead between scalars and non-scalars functions second in iterators.
using HashTable12
 Alias for one of the internal gum::HashTable of the gum::Bijection.
using HashIter = typename HashTable12::const_iterator

Private Member Functions

template<bool Gen>
 BijectionIterator (const BijectionImplementation< T1, T2, Gen > &bijection)
 Begin constructor.

Private Attributes

HashIter _iter_
 The hashTable iterator that actually does all the job.

Friends

template<typename TT1, typename TT2, bool>
class BijectionImplementation

Detailed Description

template<typename T1, typename T2>
class gum::BijectionIterator< T1, T2 >

Unsafe iterators for bijection.

Template Parameters
T1The first type of elements in the gum::Bjection.
T2The second type of elements in the gum::Bjection.

Definition at line 1440 of file bijection.h.

Member Typedef Documentation

◆ difference_type

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::difference_type = std::ptrdiff_t

types for STL compliance

Definition at line 1458 of file bijection.h.

◆ Getter

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::Getter = BijectionIteratorGet< std::is_scalar< T1 >::value && std::is_scalar< T2 >::value >
private

Dummy classes that will enable discriminate without overhead between scalars and non-scalars functions second in iterators.

Definition at line 1466 of file bijection.h.

◆ HashIter

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::HashIter = typename HashTable12::const_iterator
private

Definition at line 1611 of file bijection.h.

◆ HashTable12

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::HashTable12
private
Initial value:
typename std::conditional< std::is_scalar< T1 >::value && std::is_scalar< T2 >::value,
The class for generic Hash Tables.
Definition hashTable.h:640

Alias for one of the internal gum::HashTable of the gum::Bijection.

Definition at line 1607 of file bijection.h.

◆ iterator_category

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::iterator_category = std::forward_iterator_tag

types for STL compliance

Definition at line 1447 of file bijection.h.

◆ type1_const_pointer

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type1_const_pointer = const T1*

types for STL compliance

Definition at line 1452 of file bijection.h.

◆ type1_const_reference

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type1_const_reference = const T1&

types for STL compliance

Definition at line 1450 of file bijection.h.

◆ type1_pointer

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type1_pointer = T1*

types for STL compliance

Definition at line 1451 of file bijection.h.

◆ type1_reference

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type1_reference = T1&

types for STL compliance

Definition at line 1449 of file bijection.h.

◆ type1_type

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type1_type = T1

types for STL compliance

Definition at line 1448 of file bijection.h.

◆ type2_const_pointer

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type2_const_pointer = const T2*

types for STL compliance

Definition at line 1457 of file bijection.h.

◆ type2_const_reference

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type2_const_reference = const T2&

types for STL compliance

Definition at line 1455 of file bijection.h.

◆ type2_pointer

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type2_pointer = T2*

types for STL compliance

Definition at line 1456 of file bijection.h.

◆ type2_reference

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type2_reference = T2&

types for STL compliance

Definition at line 1454 of file bijection.h.

◆ type2_type

template<typename T1, typename T2>
using gum::BijectionIterator< T1, T2 >::type2_type = T2

types for STL compliance

Definition at line 1453 of file bijection.h.

Constructor & Destructor Documentation

◆ BijectionIterator() [1/5]

template<typename T1, typename T2>
template<bool Gen>
gum::BijectionIterator< T1, T2 >::BijectionIterator ( const BijectionImplementation< T1, T2, Gen > & bijection)
private

Begin constructor.

Constructor.

By default, the iterator points to the starting point of the bijection.

Definition at line 932 of file bijection_tpl.h.

933 :
934 _iter_{bijection._firstToSecond_.cbegin()} {
936 }
Unsafe iterators for bijection.
Definition bijection.h:1440
BijectionIterator(const BijectionImplementation< T1, T2, Gen > &bijection)
Begin constructor.
HashIter _iter_
The hashTable iterator that actually does all the job.
Definition bijection.h:1614

References BijectionIterator(), _iter_, and BijectionImplementation.

Referenced by BijectionIterator(), BijectionIterator(), BijectionIterator(), BijectionIterator(), BijectionIterator(), ~BijectionIterator(), operator!=(), operator+(), operator++(), operator+=(), operator=(), operator=(), and operator==().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ BijectionIterator() [2/5]

template<typename T1, typename T2>
gum::BijectionIterator< T1, T2 >::BijectionIterator ( )
explicitnoexcept

Default constructor.

Definition at line 925 of file bijection_tpl.h.

References BijectionIterator().

Here is the call graph for this function:

◆ BijectionIterator() [3/5]

template<typename T1, typename T2>
gum::BijectionIterator< T1, T2 >::BijectionIterator ( const Bijection< T1, T2 > & bijection)

Default constructor.

Constructor.

Parameters
bijectionThe gum::Bijection to iterate onto.

Definition at line 940 of file bijection_tpl.h.

940 :
941 _iter_{bijection._firstToSecond_.cbegin()} {
943 }

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ BijectionIterator() [4/5]

template<typename T1, typename T2>
gum::BijectionIterator< T1, T2 >::BijectionIterator ( const BijectionIterator< T1, T2 > & from)

Copy constructor.

Parameters
fromThe gum::BijectionIterator to copy.

Definition at line 947 of file bijection_tpl.h.

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ BijectionIterator() [5/5]

template<typename T1, typename T2>
gum::BijectionIterator< T1, T2 >::BijectionIterator ( BijectionIterator< T1, T2 > && from)
noexcept

Move constructor.

move constructor

Parameters
fromThe gum::BijectionIterator to move.

Definition at line 954 of file bijection_tpl.h.

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ ~BijectionIterator()

template<typename T1, typename T2>
gum::BijectionIterator< T1, T2 >::~BijectionIterator ( )
noexcept

Class destructor.

Destructor.

Definition at line 961 of file bijection_tpl.h.

961 {
963 }

References BijectionIterator().

Here is the call graph for this function:

Member Function Documentation

◆ first()

template<typename T1, typename T2>
const T1 & gum::BijectionIterator< T1, T2 >::first ( ) const

Returns the first element of the current association.

return the first element of the current association

Returns
Returns the first element of the current association.
Exceptions
UndefinedIteratorValueRaised when the iterator does not point to a valid element of the bijection.

Definition at line 1014 of file bijection_tpl.h.

1014 {
1015 return _iter_.key();
1016 }

References _iter_.

Referenced by operator=().

Here is the caller graph for this function:

◆ operator!=()

template<typename T1, typename T2>
bool gum::BijectionIterator< T1, T2 >::operator!= ( const BijectionIterator< T1, T2 > & toCompare) const
noexcept

Inequality operator.

Comparison of iterators.

Parameters
toCompareThe gum::BijectionIteratorSafe to compare.
Returns
Returns true if they differ.

Definition at line 1000 of file bijection_tpl.h.

1001 {
1002 return _iter_ != toCompare._iter_;
1003 }

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ operator+()

template<typename T1, typename T2>
BijectionIterator< T1, T2 > gum::BijectionIterator< T1, T2 >::operator+ ( Size nb)
noexcept

Return a new iterator.

returns a new iterator

If the iterator points to gum::Bijection::end(), the resulting iterator also points to gum::Bijection::end(). If there are nb or fewer elements to parse to reach the end of the gum::Bijection, then the resulting iterator points to gum::Bijection::end().

Definition at line 994 of file bijection_tpl.h.

994 {
995 return BijectionIterator< T1, T2 >{*this} += nb;
996 }

References BijectionIterator().

Here is the call graph for this function:

◆ operator++()

template<typename T1, typename T2>
BijectionIterator< T1, T2 > & gum::BijectionIterator< T1, T2 >::operator++ ( )
noexcept

Go to the next association, if it exists.

Go to the next association (if exists).

If the iterator points to gum::Bijection::end(), nothing is done.

Returns
Return sthis gum::BijectionIterator.

Definition at line 980 of file bijection_tpl.h.

980 {
981 ++_iter_;
982 return *this;
983 }

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ operator+=()

template<typename T1, typename T2>
BijectionIterator< T1, T2 > & gum::BijectionIterator< T1, T2 >::operator+= ( Size nb)
noexcept

Moves the iterator by nb elements.

moves the iterator by nb elements

If the iterator points to gum::Bijection::end(), nothing is done. If there are nb or fewer elements to parse to reach the end of the bijection, then this method makes the iterator point to gum::Bijection::end().

Parameters
nbThe number of steps by which the iterator moves.
Returns
Returns this gum::BijectionIterator.

Definition at line 987 of file bijection_tpl.h.

987 {
988 _iter_ += nb;
989 return *this;
990 }

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ operator=() [1/2]

template<typename T1, typename T2>
BijectionIterator< T1, T2 > & gum::BijectionIterator< T1, T2 >::operator= ( BijectionIterator< T1, T2 > && toMove)
noexcept

Move operator.

move operator

Parameters
toMoveThe gum::BijectionIterator to move.
Returns
Returns this gum::BijectionIterator.

Definition at line 973 of file bijection_tpl.h.

973 {
975 return *this;
976 }

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ operator=() [2/2]

template<typename T1, typename T2>
BijectionIterator< T1, T2 > & gum::BijectionIterator< T1, T2 >::operator= ( const BijectionIterator< T1, T2 > & toCopy)
default

Copy operator.

Parameters
toCopyThe gum::BijectionIterator to copy.
Returns
Returns this gum::BijectionIterator.

References BijectionIterator(), first(), and second().

Here is the call graph for this function:

◆ operator==()

template<typename T1, typename T2>
bool gum::BijectionIterator< T1, T2 >::operator== ( const BijectionIterator< T1, T2 > & toCompare) const
noexcept

Equality operator.

Comparison of iterators.

Parameters
toCompareThe gum::BijectionIteratorSafe to compare.
Returns
Returns true if they are equal.

Definition at line 1007 of file bijection_tpl.h.

1008 {
1009 return _iter_ == toCompare._iter_;
1010 }

References BijectionIterator(), and _iter_.

Here is the call graph for this function:

◆ second()

template<typename T1, typename T2>
const T2 & gum::BijectionIterator< T1, T2 >::second ( ) const

Returns the second element of the current association.

return the second element of the current association

Returns
Returns the second element of the current association.
Exceptions
UndefinedIteratorValueRaised when the iterator does not point to a valid element of the bijection.

Definition at line 1020 of file bijection_tpl.h.

1020 {
1021 return Getter::op_second(_iter_.val());
1022 }
static const T & op_second(const T *x)
Returns a refeence over a pointer.

References _iter_, and gum::BijectionIteratorGet< gen >::op_second().

Referenced by operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ BijectionImplementation

template<typename T1, typename T2>
template<typename TT1, typename TT2, bool>
friend class BijectionImplementation
friend

Definition at line 1442 of file bijection.h.

References BijectionImplementation.

Referenced by BijectionIterator(), and BijectionImplementation.

Member Data Documentation

◆ _iter_

template<typename T1, typename T2>
HashIter gum::BijectionIterator< T1, T2 >::_iter_
private

The hashTable iterator that actually does all the job.

Definition at line 1614 of file bijection.h.

Referenced by BijectionIterator(), BijectionIterator(), BijectionIterator(), BijectionIterator(), first(), operator!=(), operator++(), operator+=(), operator=(), operator==(), and second().


The documentation for this class was generated from the following files: