aGrUM  0.20.2
a C++ library for (probabilistic) graphical models
gum::Set< Key, Alloc > Class Template Reference

Representation of a setA Set is a structure that contains arbitrary elements. More...

#include <agrum/tools/core/set.h>

+ Collaboration diagram for gum::Set< Key, Alloc >:

Public Member Functions

template<typename OtherAlloc >
INLINE Set (const Set< Key, OtherAlloc > &s)
 
template<typename OtherAlloc >
INLINE bool operator!= (const Set< Key, OtherAlloc > &s2) const
 
template<typename OtherAlloc >
INLINE bool isProperSubsetOf (const Set< Key, OtherAlloc > &s) const
 
template<typename OtherAlloc >
INLINE bool isProperSupersetOf (const Set< Key, OtherAlloc > &s) const
 
template<typename OtherAlloc >
INLINE bool isSubsetOrEqual (const Set< Key, OtherAlloc > &s) const
 
template<typename OtherAlloc >
INLINE bool isSupersetOrEqual (const Set< Key, OtherAlloc > &s) const
 
template<typename... Args>
INLINE void emplace (Args &&... args)
 
Constructors / Destructors
 Set (Size capacity=HashTableConst::default_size, bool resize_policy=true)
 Default constructor. More...
 
 Set (std::initializer_list< Key > list)
 Initializer list constructor. More...
 
 Set (const Set< Key, Alloc > &aHT)
 Copy constructor. More...
 
template<typename OtherAlloc >
 Set (const Set< Key, OtherAlloc > &aHT)
 Generalized copy constructor. More...
 
 Set (Set< Key, Alloc > &&aHT)
 Move constructor. More...
 
 ~Set ()
 Class destructor. More...
 
Operators
Set< Key, Alloc > & operator= (const Set< Key, Alloc > &from)
 Copy operator. More...
 
template<typename OtherAlloc >
Set< Key, Alloc > & operator= (const Set< Key, OtherAlloc > &from)
 Generalized copy operator. More...
 
Set< Key, Alloc > & operator= (Set< Key, Alloc > &&from)
 Move operator. More...
 
template<typename OtherAlloc >
bool operator== (const Set< Key, OtherAlloc > &s2) const
 Mathematical equality between two sets. More...
 
template<typename OtherAlloc >
bool operator!= (const Set< Key, OtherAlloc > &s2) const
 Mathematical inequality between two sets. More...
 
template<typename OtherAlloc >
const Set< Key, Alloc > & operator*= (const Set< Key, OtherAlloc > &s2)
 Intersection update operator. More...
 
template<typename OtherAlloc >
Set< Key, Alloc > operator* (const Set< Key, OtherAlloc > &s2) const
 Intersection operator. More...
 
template<typename OtherAlloc >
const Set< Key, Alloc > & operator+= (const Set< Key, OtherAlloc > &s2)
 Union update operator. More...
 
template<typename OtherAlloc >
Set< Key, Alloc > operator+ (const Set< Key, OtherAlloc > &s2) const
 Union operator. More...
 
template<typename OtherAlloc >
Set< Key, Alloc > operator- (const Set< Key, OtherAlloc > &s2) const
 Disjunction operator. More...
 
Set< Key, Alloc > & operator<< (const Key &k)
 Adds a new element to the set (alias for insert). More...
 
Set< Key, Alloc > & operator<< (Key &&k)
 Adds a new element to the set (alias for insert). More...
 
Set< Key, Alloc > & operator>> (const Key &k)
 Removes an element from the set (alias for erase). More...
 
Accessors / Modifiers
void insert (const Key &k)
 Inserts a new element into the set. More...
 
void insert (Key &&k)
 Inserts a new element into the set. More...
 
template<typename... Args>
void emplace (Args &&... args)
 Emplace a new element in the set. More...
 
void erase (const Key &k)
 Erases an element from the set. More...
 
void erase (const iterator_safe &k)
 Erases an element from the set. More...
 
void clear ()
 Removes all the elements, if any, from the set. More...
 
Size size () const noexcept
 Returns the number of elements in the set. More...
 
bool contains (const Key &k) const
 Indicates whether a given elements belong to the set. More...
 
template<typename OtherAlloc >
bool isProperSubsetOf (const Set< Key, OtherAlloc > &s) const
 
template<typename OtherAlloc >
bool isProperSupersetOf (const Set< Key, OtherAlloc > &s) const
 
template<typename OtherAlloc >
bool isSubsetOrEqual (const Set< Key, OtherAlloc > &s) const
 
template<typename OtherAlloc >
bool isSupersetOrEqual (const Set< Key, OtherAlloc > &s) const
 
bool exists (const Key &k) const
 Indicates whether a given elements belong to the set. More...
 
bool empty () const noexcept
 Indicates whether the set is the empty set. More...
 
std::string toString () const
 Prints the content of the set. More...
 
Fine tuning
Size capacity () const
 Returns the capacity of the underlying hash table containing the set. More...
 
void resize (Size new_capacity)
 Changes the size of the underlying hash table containing the set. More...
 
void setResizePolicy (const bool new_policy)
 Enables the user to change dynamically the resizing policy of the underlying hash table. More...
 
bool resizePolicy () const
 Returns the current resizing policy of the underlying hash table. More...
 
Mapper
template<typename NewKey , typename NewAlloc = typename Alloc::template rebind< NewKey >::other>
HashTable< Key, NewKey, NewAlloc > hashMap (NewKey(*f)(const Key &), Size capacity=0) const
 Creates a hashtable of NewKey from the set. More...
 
template<typename NewKey , typename NewAlloc = typename Alloc::template rebind< NewKey >::other>
HashTable< Key, NewKey, NewAlloc > hashMap (const NewKey &val, Size size=0) const
 Creates a hash table of NewKey from the set. More...
 
template<typename NewKey , typename NewAlloc = typename Alloc::template rebind< NewKey >::other>
List< NewKey, NewAlloc > listMap (NewKey(*f)(const Key &)) const
 A method to create a List of NewKey from the set. More...
 

Public Types

using value_type = Key
 Types for STL compliance. More...
 
using reference = Key &
 Types for STL compliance. More...
 
using const_reference = const Key &
 Types for STL compliance. More...
 
using pointer = Key *
 Types for STL compliance. More...
 
using const_pointer = const Key *
 Types for STL compliance. More...
 
using size_type = std::size_t
 Types for STL compliance. More...
 
using difference_type = std::ptrdiff_t
 Types for STL compliance. More...
 
using allocator_type = Alloc
 Types for STL compliance. More...
 
using iterator = SetIterator< Key >
 Types for STL compliance. More...
 
using const_iterator = SetIterator< Key >
 Types for STL compliance. More...
 
using iterator_safe = SetIteratorSafe< Key >
 Types for STL compliance. More...
 
using const_iterator_safe = SetIteratorSafe< Key >
 Types for STL compliance. More...
 

Friends

class SetIterator< Key >
 Friends to speed up access. More...
 
class SetIteratorSafe< Key >
 Friends to speed up access. More...
 
template<typename K , typename A >
class Set
 Friends to speed up access. More...
 

Iterators

iterator_safe beginSafe () const
 The usual safe begin iterator to parse the set. More...
 
const_iterator_safe cbeginSafe () const
 The usual safe begin iterator to parse the set. More...
 
const iterator_safeendSafe () const noexcept
 The usual safe end iterator to parse the set. More...
 
const const_iterator_safecendSafe () const noexcept
 The usual safe end iterator to parse the set. More...
 
iterator begin () const
 The usual unsafe begin iterator to parse the set. More...
 
const_iterator cbegin () const
 The usual unsafe begin iterator to parse the set. More...
 
const iteratorend () const noexcept
 The usual unsafe end iterator to parse the set. More...
 
const const_iteratorcend () const noexcept
 The usual unsafe end iterator to parse the set. More...
 
static const iteratorend4Statics ()
 Returns the end iterator for other classes' statics (read the detailed description of this method). More...
 
static const const_iteratorconstEnd4Statics ()
 Returns the end iterator for other classes' statics (read the detailed description of this method). More...
 
static const iterator_safeendSafe4Statics ()
 Returns the end iterator for other classes' statics (read the detailed description of this method). More...
 
static const const_iterator_safeconstEndSafe4Statics ()
 Returns the end iterator for other classes' statics (read the detailed description of this method). More...
 

Detailed Description

template<typename Key, typename Alloc = std::allocator< Key >>
class gum::Set< Key, Alloc >

Representation of a set

A Set is a structure that contains arbitrary elements.

Note that, as in mathematics, an element cannot appear twice in a given set. Sets have unsafe and safe iterators. The safe iterators (SetIteratorSafe<> a.k.a. Set<>::iterator_safe are slightly slower than the unsafe ones (SetIterator<> a.k.a. Set<>::iterator) but they guarantee that even if they point to a deleted element, using their operators ++ or * cannot produce a segfault. In such cases, they simply raise an exception. On the contrary, unsafe iterators should never be used on elements that can be deleted because, as in the STL, they will most probably produce a segfault.

Usage example:
// creation of a set with 10 elements
Set<int> set;
for (int i = 0; i< 10; ++i)
set<<i;
Set<int> set2 { 1, 2, 3 };
// parse the set
for (const auto iter = set.begin (); iter != set.end (); ++iter) {
// display the values
cerr << *iter << endl;
}
// use an iterator to point the element we wish to erase
Set<int>::iterator iter = set.begin ();
set.erase ( iter );
// check whether two iterators point toward the same element
Set<int>::iterator iter1 = set.begin();
Set<int>::iterator iter2 = set.end();
if (iter1 != iter2)
cerr << "iter1 and iter2 point toward different elements";
Template Parameters
KeyThe elements type.
AllocThe elements allocator.

Definition at line 164 of file set.h.

Member Typedef Documentation

◆ allocator_type

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::allocator_type = Alloc

Types for STL compliance.

Definition at line 175 of file set.h.

◆ const_iterator

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::const_iterator = SetIterator< Key >

Types for STL compliance.

Definition at line 177 of file set.h.

◆ const_iterator_safe

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::const_iterator_safe = SetIteratorSafe< Key >

Types for STL compliance.

Definition at line 179 of file set.h.

◆ const_pointer

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::const_pointer = const Key*

Types for STL compliance.

Definition at line 172 of file set.h.

◆ const_reference

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::const_reference = const Key&

Types for STL compliance.

Definition at line 170 of file set.h.

◆ difference_type

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::difference_type = std::ptrdiff_t

Types for STL compliance.

Definition at line 174 of file set.h.

◆ iterator

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::iterator = SetIterator< Key >

Types for STL compliance.

Definition at line 176 of file set.h.

◆ iterator_safe

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::iterator_safe = SetIteratorSafe< Key >

Types for STL compliance.

Definition at line 178 of file set.h.

◆ pointer

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::pointer = Key*

Types for STL compliance.

Definition at line 171 of file set.h.

◆ reference

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::reference = Key&

Types for STL compliance.

Definition at line 169 of file set.h.

◆ size_type

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::size_type = std::size_t

Types for STL compliance.

Definition at line 173 of file set.h.

◆ value_type

template<typename Key, typename Alloc = std::allocator< Key >>
using gum::Set< Key, Alloc >::value_type = Key

Types for STL compliance.

Definition at line 168 of file set.h.

Constructor & Destructor Documentation

◆ Set() [1/7]

template<typename Key , typename Alloc >
INLINE gum::Set< Key, Alloc >::Set ( Size  capacity = HashTableConst::default_size,
bool  resize_policy = true 
)
explicit

Default constructor.

Sets rely on hashtables to store their items. The optional parameters of this constructor enable a fine memory management of these hashtables.

Parameters
capacityThe number of slots allocated to the hashtable (see the HashTable default constructor)
resize_policyEnables the hashtable to resize itself automatically when its number of elements is sufficiently high that it induces slow retrievals of elements.

Definition at line 318 of file set_tpl.h.

318  :
319  // create the hash table without key uniqueness policy (as we will
320  // check
321  // ourselves the uniqueness of Keys before inserting new elements)
322  inside__(capacity, resize_policy, false) {
323  GUM_CONSTRUCTOR(Set);
324 
325  // make sure the end() iterator is constructed properly
326  endSafe4Statics();
327  end4Statics();
328  }
Size capacity() const
Returns the capacity of the underlying hash table containing the set.
Definition: set_tpl.h:545
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
static const iterator & end4Statics()
Returns the end iterator for other classes&#39; statics (read the detailed description of this method)...
Definition: set_tpl.h:304
static const iterator_safe & endSafe4Statics()
Returns the end iterator for other classes&#39; statics (read the detailed description of this method)...
Definition: set_tpl.h:290
friend class Set
Friends to speed up access.
Definition: set.h:774

◆ Set() [2/7]

template<typename Key, typename Alloc >
INLINE gum::Set< Key, Alloc >::Set ( std::initializer_list< Key >  list)

Initializer list constructor.

Parameters
listThe initializer list.

Definition at line 332 of file set_tpl.h.

332  :
333  inside__(Size(list.size()) / 2, true, false) {
334  GUM_CONSTRUCTOR(Set);
335  for (const auto& elt: list) {
336  insert(elt);
337  }
338 
339  // make sure the end() iterator is constructed properly
340  endSafe4Statics();
341  end4Statics();
342  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
static const iterator & end4Statics()
Returns the end iterator for other classes&#39; statics (read the detailed description of this method)...
Definition: set_tpl.h:304
static const iterator_safe & endSafe4Statics()
Returns the end iterator for other classes&#39; statics (read the detailed description of this method)...
Definition: set_tpl.h:290
friend class Set
Friends to speed up access.
Definition: set.h:774
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:47
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:632

◆ Set() [3/7]

template<typename Key, typename Alloc>
INLINE gum::Set< Key, Alloc >::Set ( const Set< Key, Alloc > &  aHT)

Copy constructor.

Parameters
aHTThe gum::Set to copy.

Definition at line 346 of file set_tpl.h.

346  :
347  inside__(s.inside__) {
348  GUM_CONS_CPY(Set);
349  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
friend class Set
Friends to speed up access.
Definition: set.h:774

◆ Set() [4/7]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
gum::Set< Key, Alloc >::Set ( const Set< Key, OtherAlloc > &  aHT)

Generalized copy constructor.

Parameters
aHTThe gum::Set to copy.
Template Parameters
OtherAllocThe other gum::Set allocator.

◆ Set() [5/7]

template<typename Key, typename Alloc>
INLINE gum::Set< Key, Alloc >::Set ( Set< Key, Alloc > &&  aHT)

Move constructor.

Parameters
aHTThe gum::Set to move.

Definition at line 361 of file set_tpl.h.

361  :
362  inside__(std::move(s.inside__)) {
363  GUM_CONS_MOV(Set);
364  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
friend class Set
Friends to speed up access.
Definition: set.h:774

◆ ~Set()

template<typename Key, typename Alloc = std::allocator< Key >>
gum::Set< Key, Alloc >::~Set ( )

Class destructor.

◆ Set() [6/7]

template<typename Key, typename Alloc = std::allocator< Key >>
gum::Set< Key, Alloc >::Set ( const HashTable< Key, bool, Alloc > &  h)
private

Convert a hash table into a set of keys.

◆ Set() [7/7]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
INLINE gum::Set< Key, Alloc >::Set ( const Set< Key, OtherAlloc > &  s)

Definition at line 354 of file set_tpl.h.

354  :
355  inside__(s.inside__) {
356  GUM_CONS_CPY(Set);
357  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
friend class Set
Friends to speed up access.
Definition: set.h:774

Member Function Documentation

◆ begin()

template<typename Key , typename Alloc >
INLINE Set< Key, Alloc >::iterator gum::Set< Key, Alloc >::begin ( ) const

The usual unsafe begin iterator to parse the set.

Returns
Returns the usual unsafe begin iterator to parse the set.

Definition at line 516 of file set_tpl.h.

516  {
517  return SetIterator< Key >{*this};
518  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:771

◆ beginSafe()

template<typename Key , typename Alloc >
INLINE Set< Key, Alloc >::iterator_safe gum::Set< Key, Alloc >::beginSafe ( ) const

The usual safe begin iterator to parse the set.

Returns
Returns The usual safe begin iterator to parse the set.

Definition at line 487 of file set_tpl.h.

487  {
488  return SetIteratorSafe< Key >{*this};
489  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:772

◆ capacity()

template<typename Key , typename Alloc >
INLINE Size gum::Set< Key, Alloc >::capacity ( ) const

Returns the capacity of the underlying hash table containing the set.

The method runs in constant time.

Returns
Returns the capacity of the underlying hash table containing the set.

Definition at line 545 of file set_tpl.h.

545  {
546  return inside__.capacity();
547  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
Size capacity() const noexcept
Returns the number of slots in the &#39;nodes&#39; vector of the hashtable.

◆ cbegin()

template<typename Key , typename Alloc >
INLINE Set< Key, Alloc >::const_iterator gum::Set< Key, Alloc >::cbegin ( ) const

The usual unsafe begin iterator to parse the set.

Returns
Returns the usual unsafe begin iterator to parse the set.

Definition at line 523 of file set_tpl.h.

523  {
524  return SetIterator< Key >{*this};
525  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:771

◆ cbeginSafe()

template<typename Key , typename Alloc >
INLINE Set< Key, Alloc >::const_iterator_safe gum::Set< Key, Alloc >::cbeginSafe ( ) const

The usual safe begin iterator to parse the set.

Returns
Returns the usual safe begin iterator to parse the set.

Definition at line 494 of file set_tpl.h.

494  {
495  return SetIteratorSafe< Key >{*this};
496  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:772

◆ cend()

template<typename Key , typename Alloc >
INLINE const Set< Key, Alloc >::const_iterator & gum::Set< Key, Alloc >::cend ( ) const
noexcept

The usual unsafe end iterator to parse the set.

Returns
Returns the usual unsafe end iterator to parse the set.

Definition at line 538 of file set_tpl.h.

538  {
539  return *(reinterpret_cast< const SetIterator< Key >* >(
540  SetIteratorStaticEnd::SetIterEnd__));
541  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:771

◆ cendSafe()

template<typename Key , typename Alloc >
INLINE const Set< Key, Alloc >::const_iterator_safe & gum::Set< Key, Alloc >::cendSafe ( ) const
noexcept

The usual safe end iterator to parse the set.

Returns
Returns the usual safe end iterator to parse the set.

Definition at line 509 of file set_tpl.h.

509  {
510  return *(reinterpret_cast< const SetIteratorSafe< Key >* >(
511  SetIteratorStaticEnd::SetIterEndSafe__));
512  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:772

◆ clear()

template<typename Key , typename Alloc >
INLINE void gum::Set< Key, Alloc >::clear ( )

Removes all the elements, if any, from the set.

Definition at line 374 of file set_tpl.h.

374  {
375  // first we remove all the elements from the hashtable actually containing
376  // the elements of the set. Note that, doing so, all the hashtable iterators
377  // will be updated as well. In turn, this will imply that, whenever an
378  // operation will be performed on a SetIteratorSafe, this will raise an
379  // exception.
380  inside__.clear();
381 
382  // Note that actually there is no need to update the end iterator as this
383  // one
384  // is not affected by changes within hashtables (adding/deleting elements).
385  // Hence, for speedup, we do not update the end iterator
386  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
void clear()
Removes all the elements in the hash table.

◆ constEnd4Statics()

template<typename Key , typename Alloc >
INLINE const SetIterator< Key > & gum::Set< Key, Alloc >::constEnd4Statics ( )
static

Returns the end iterator for other classes' statics (read the detailed description of this method).

To reduce the Sets memory consumption (which are heavily used in aGrUM) while allowing fast for(iter=begin(); iter!=end();++iter) loops, end iterators are created just once as a static member of a non-template Set. While this scheme is efficient and it works quite effectively when manipulating sets, it has a drawback: other classes with static members using the Set's end() iterator may fail to work due to the well known "static initialization order fiasco" (see Marshall Cline's C++ FAQ for more details about this C++ feature). OK, so what is the problem? Consider a class, say X, containing a Set that stores all its elements in a convenient way. To reduce memory consumption, X::end iterator is a static member that is initialized with a Set::end iterator. If the compiler decides to initialize X::end before initializing Set::end, then X::end will be in an incoherent state. Unfortunately, we cannot know for sure in which order static members will be initialized (the order is a compiler's decision). Hence, we shall enfore the fact that Set::end is initialized before X::end. Using method Set::end4Statics will ensure this fact: it uses the C++ "construct on first use" idiom (see the C++ FAQ) that ensures that the order fiasco is avoided. More precisely, end4Statics uses a global variable that is the very end iterator used by all Sets. Now, this induces a small overhead. So, we also provide a Set::end() method that returns the Set::end iterator without this small overhead, but assuming that function end4Statics has already been called once (which is always the case) when a Set has been created.

So, to summarize: when initializing static members, use constEnd4Statics() rather than cend(). In all the other cases, use simply the usual method cend().

Returns
Returns the end iterator for other classes' statics (read the detailed description of this method).

Definition at line 311 of file set_tpl.h.

311  {
312  return *(reinterpret_cast< const SetIterator< Key >* >(
313  SetIteratorStaticEnd::constEnd4Statics()));
314  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:771

◆ constEndSafe4Statics()

template<typename Key , typename Alloc >
INLINE const SetIteratorSafe< Key > & gum::Set< Key, Alloc >::constEndSafe4Statics ( )
static

Returns the end iterator for other classes' statics (read the detailed description of this method).

To reduce the Sets memory consumption (which are heavily used in aGrUM) while allowing fast for(iter=begin(); iter!=end();++iter) loops, end iterators are created just once as a static member of a non-template Set. While this scheme is efficient and it works quite effectively when manipulating sets, it has a drawback: other classes with static members using the Set's end() iterator may fail to work due to the well known "static initialization order fiasco" (see Marshall Cline's C++ FAQ for more details about this C++ feature). OK, so what is the problem? Consider a class, say X, containing a Set that stores all its elements in a convenient way. To reduce memory consumption, X::end iterator is a static member that is initialized with a Set::end iterator. If the compiler decides to initialize X::end before initializing Set::end, then X::end will be in an incoherent state. Unfortunately, we cannot know for sure in which order static members will be initialized (the order is a compiler's decision). Hence, we shall enfore the fact that Set::end is initialized before X::end. Using method Set::end4Statics will ensure this fact: it uses the C++ "construct on first use" idiom (see the C++ FAQ) that ensures that the order fiasco is avoided. More precisely, end4Statics uses a global variable that is the very end iterator used by all Sets. Now, this induces a small overhead. So, we also provide a Set::end() method that returns the Set::end iterator without this small overhead, but assuming that function end4Statics has already been called once (which is always the case) when a Set has been created.

So, to summarize: when initializing static members, use constEndSafe4Statics() rather than cendSafe(). In all the other cases, use simply the usual method cendSafe ().

Returns
Returns the end iterator for other classes' statics (read the detailed description of this method).

Definition at line 297 of file set_tpl.h.

297  {
298  return *(reinterpret_cast< const SetIteratorSafe< Key >* >(
299  SetIteratorStaticEnd::constEndSafe4Statics()));
300  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:772

◆ contains()

template<typename Key, typename Alloc >
INLINE bool gum::Set< Key, Alloc >::contains ( const Key &  k) const

Indicates whether a given elements belong to the set.

Returns
Returns true if a given elements belong to the set.

Definition at line 580 of file set_tpl.h.

580  {
581  return inside__.exists(k);
582  }
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ emplace() [1/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename... Args>
void gum::Set< Key, Alloc >::emplace ( Args &&...  args)

Emplace a new element in the set.

Emplace is a method that allows to construct directly an element of type Key by passing to its constructor all the arguments it needs.

Parameters
argsthe arguments passed to the constructor
Warning
if the set already contains the element, nothing is done. In particular, it is not added to the set and no exception is thrown.

◆ emplace() [2/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename... Args>
INLINE void gum::Set< Key, Alloc >::emplace ( Args &&...  args)

Definition at line 669 of file set_tpl.h.

Referenced by gum::Potential< GUM_SCALAR >::abs(), gum::Directory::absolutePath(), gum::AbstractSimulator::AbstractSimulator(), gum::Instantiation::actAsSlave(), gum::AdaptiveRMaxPlaner::AdaptiveRMaxPlaner(), gum::ContingencyTable< Idx, GUM_SCALAR >::add(), gum::MultiDimWithOffset< GUM_SCALAR >::add(), gum::MultiDimSparse< GUM_SCALAR >::add(), gum::MultiDimDecorator< GUM_SCALAR >::add(), gum::MultiDimBucket< GUM_SCALAR >::add(), gum::Chi2TestPolicy< GUM_SCALAR >::add(), gum::MultiDimBijArray< GUM_SCALAR >::add(), gum::MultiDimArray< GUM_SCALAR >::add(), gum::GTestPolicy< GUM_SCALAR >::add(), gum::LeastSquareTestPolicy< GUM_SCALAR >::add(), gum::TreeOperatorStrategy< GUM_SCALAR >::add(), gum::MDDOperatorStrategy< GUM_SCALAR >::add(), gum::MultiDimImplementation< std::string >::add(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::add(), gum::BayesNet< double >::add(), gum::ErrorsContainer::add(), gum::Instantiation::add(), gum::Instantiation::add__(), gum::FMDPFactory< GUM_SCALAR >::addAction(), gum::AggregatorDecomposition< GUM_SCALAR >::addAggregator_(), gum::BayesNet< double >::addAMPLITUDE(), gum::BayesNet< double >::addAND(), gum::ArcGraphPart::addArc(), gum::DAG::addArc(), gum::DiGraph::addArc(), gum::FMDPFactory< GUM_SCALAR >::addArc(), gum::DAGCycleDetector::addArc(), gum::BayesNet< double >::addArc(), gum::FMDPFactory< GUM_SCALAR >::addCost(), gum::BayesNet< double >::addCOUNT(), gum::AggregatorDecomposition< GUM_SCALAR >::addDepthLayer_(), gum::FMDPFactory< GUM_SCALAR >::addDiscount(), gum::EdgeGraphPart::addEdge(), gum::UndiGraph::addEdge(), gum::ErrorsContainer::addError(), gum::GraphicalModelInference< GUM_SCALAR >::addEvidence(), gum::ErrorsContainer::addException(), gum::BayesNet< double >::addEXISTS(), gum::BayesNet< double >::addFORALL(), gum::NodeGraphPart::addHole__(), gum::LeafAggregator::addInitialPair__(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::addInternalNode(), gum::FMDPFactory< GUM_SCALAR >::addInternalNode(), gum::MultiDimFunctionGraphTreeManager< GUM_SCALAR, TerminalNodePolicy >::addInternalNode(), gum::MultiDimFunctionGraphROManager< GUM_SCALAR, TerminalNodePolicy >::addInternalNode(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::addInternalNode_(), gum::JointTargetedInference< GUM_SCALAR >::addJointTarget(), gum::JointTargetedMNInference< GUM_SCALAR >::addJointTarget(), gum::LeafAggregator::addLeaf(), gum::IMDDI< AttributeSelection, isScalar >::addLeaf__(), gum::LinkedList< gum::Parent >::addLink(), gum::GraphicalModelInference< GUM_SCALAR >::addListOfEvidence(), gum::BayesNet< double >::addLogit(), gum::BayesNetFactory< GUM_SCALAR >::addMax(), gum::BayesNet< double >::addMAX(), gum::BayesNet< double >::addMEDIAN(), gum::BayesNetFactory< GUM_SCALAR >::addMin(), gum::BayesNet< double >::addMIN(), gum::FMDPFactory< GUM_SCALAR >::addModality(), gum::BayesNetFactory< GUM_SCALAR >::addModality(), gum::BayesNetFactory< GUM_SCALAR >::addNetworkProperty(), gum::NodeGraphPart::addNode(), gum::NodeGraphPart::addNodes(), gum::NodeGraphPart::addNodeWithId(), gum::BayesNet< double >::addNoisyAND(), gum::BayesNet< double >::addNoisyOR(), gum::BayesNet< double >::addNoisyORCompound(), gum::BayesNet< double >::addNoisyORNet(), gum::Chi2TestPolicy< GUM_SCALAR >::addObservation(), gum::LeastSquareTestPolicy< GUM_SCALAR >::addObservation(), gum::GTestPolicy< GUM_SCALAR >::addObservation(), gum::IMDDI< AttributeSelection, isScalar >::addObservation(), gum::NodeDatabase< AttributeSelection, isScalar >::addObservation(), gum::ITI< AttributeSelection, isScalar >::addObservation(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::addObservation(), gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::addObservation(), gum::NodeDatabase< AttributeSelection, isScalar >::addObservation__(), gum::BayesNet< double >::addOR(), gum::FusionContext< true >::addPair(), gum::BayesNetFactory< GUM_SCALAR >::addParent(), gum::InternalNode::addParent(), gum::FMDPFactory< GUM_SCALAR >::addReward(), gum::StructuredPlaner< double >::addReward_(), gum::GraphicalModelInference< GUM_SCALAR >::addSetOfEvidence(), gum::StatesChecker::addState(), gum::BayesNet< double >::addSUM(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::addTerminalNode(), gum::FMDPFactory< GUM_SCALAR >::addTerminalNode(), gum::BayesNetFactory< GUM_SCALAR >::addTick(), gum::FMDPFactory< GUM_SCALAR >::addTransition(), gum::VariableSelector::addVar__(), gum::MultiDimBucket< GUM_SCALAR >::addVariable__(), gum::SamplingInference< GUM_SCALAR >::addVarSample_(), gum::ErrorsContainer::addWarning(), gum::BayesNet< double >::addWeightedArc(), gum::DAGCycleDetector::addWeightedSet__(), gum::Instantiation::addWithMaster(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::adjacentSwap__(), gum::AggregatorDecomposition< GUM_SCALAR >::AggregatorDecomposition(), gum::SmallObjectAllocator::allocate(), gum::FixedAllocator::allocate(), gum::FixedAllocator::Chunk__::allocate__(), gum::InternalNode::allocateNodeSons(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::allValues(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::allValues(), gum::MultiDimBucket< GUM_SCALAR >::allVariables(), gum::DAGmodel::ancestors(), gum::ArcGraphPart::ancestors(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::AorR__(), gum::MultiDimArray< GUM_SCALAR >::apply(), gum::MultiDimDecorator< GUM_SCALAR >::apply(), gum::MultiDimContainer< GUM_SCALAR >::apply(), gum::ApproximationScheme::ApproximationScheme(), gum::ApproximationSchemeListener::ApproximationSchemeListener(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::AR__(), gum::DAGCycleDetector::ArcAdd::ArcAdd(), gum::DAGCycleDetector::ArcDel::ArcDel(), gum::ArcGraphPart::ArcGraphPart(), gum::DAGCycleDetector::ArcReverse::ArcReverse(), gum::MarkovBlanket::arcs(), gum::EssentialGraph::arcs(), gum::DAGmodel::arcs(), gum::ArcGraphPart::arcs(), gum::FormulaPart::argc(), gum::Potential< GUM_SCALAR >::argmax(), gum::StructuredPlaner< double >::argmaximiseQactions_(), gum::TreeOperatorStrategy< GUM_SCALAR >::argmaximize(), gum::MDDOperatorStrategy< GUM_SCALAR >::argmaximize(), gum::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::ArgMaxSet(), gum::Potential< GUM_SCALAR >::argmin(), gum::DefaultEliminationSequenceStrategy::askFillIns(), gum::DefaultPartialOrderedEliminationSequenceStrategy::askFillIns(), gum::NodeGraphPart::asNodeSet(), gum::FusionContext< true >::associatedPairs__(), gum::FusionContext< true >::associateLeaf__(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::atPos(), gum::Listener::attachSignal__(), gum::SplayTree< Element >::back(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::back(), gum::List< const gum::Potential< GUM_SCALAR > * >::back(), gum::BarrenNodesFinder::barrenNodes(), gum::BarrenNodesFinder::BarrenNodesFinder(), gum::BarrenNodesFinder::barrenPotentials(), gum::MultiDimImplementation< std::string >::basename(), gum::BayesBall::BayesBall(), gum::BayesNetFactory< GUM_SCALAR >::bayesNet(), gum::BayesNet< double >::BayesNet(), gum::BayesNetFactory< GUM_SCALAR >::BayesNetFactory(), gum::BayesNetInference< GUM_SCALAR >::BayesNetInference(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::begin(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::begin(), gum::NodeGraphPart::begin(), gum::Set< gum::Potential< GUM_SCALAR > * >::begin(), gum::List< const gum::Potential< GUM_SCALAR > * >::begin(), gum::MultiDimImplementation< std::string >::beginMultipleChanges(), gum::MultiDimDecorator< GUM_SCALAR >::beginMultipleChanges(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::beginSafe(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::beginSafe(), gum::NodeGraphPart::beginSafe(), gum::Set< gum::Potential< GUM_SCALAR > * >::beginSafe(), gum::List< const gum::Potential< GUM_SCALAR > * >::beginSafe(), gum::BayesNet< double >::beginTopologyTransformation(), gum::Bijection< NodeId, std::size_t >::Bijection(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::BijectionImplementation(), gum::BijectionIterator< int, int >::BijectionIterator(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::BijectionIteratorSafe(), gum::BinaryJoinTreeConverter::BinaryJoinTreeConverter(), gum::BinaryJoinTreeConverterDefault::BinaryJoinTreeConverterDefault(), gum::BayesNetInference< GUM_SCALAR >::BN(), gum::NodeGraphPart::bound(), gum::MultiDimBucket< GUM_SCALAR >::bucket(), gum::MultiDimBucket< GUM_SCALAR >::bucketChanged(), gum::MultiDimBucket< GUM_SCALAR >::bucketSize(), gum::MultiDimBucket< GUM_SCALAR >::bufferSize(), gum::build_node(), gum::build_node_for_MN(), gum::EssentialGraph::buildEssentialGraph__(), gum::MarkovBlanket::buildMarkovBlanket__(), gum::GibbsBNdistance< GUM_SCALAR >::burnIn(), gum::WeightedSampling< GUM_SCALAR >::burnIn_(), gum::ImportanceSampling< GUM_SCALAR >::burnIn_(), gum::MonteCarloSampling< GUM_SCALAR >::burnIn_(), gum::GibbsSampling< GUM_SCALAR >::burnIn_(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::capacity(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::capacity(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::capacity(), gum::Set< gum::Potential< GUM_SCALAR > * >::capacity(), gum::HashFunc< std::tuple< unsigned int, unsigned int, unsigned int > >::castToSize(), gum::HashFunc< Set< T, Alloc > >::castToSize(), gum::HashFunc< Instantiation >::castToSize(), gum::MultiDimICIModel< GUM_SCALAR >::causalWeight(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::cbegin(), gum::Set< gum::Potential< GUM_SCALAR > * >::cbegin(), gum::List< const gum::Potential< GUM_SCALAR > * >::cbegin(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::cbeginSafe(), gum::Set< gum::Potential< GUM_SCALAR > * >::cbeginSafe(), gum::List< const gum::Potential< GUM_SCALAR > * >::cbeginSafe(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::cend(), gum::Set< gum::Potential< GUM_SCALAR > * >::cend(), gum::List< const gum::Potential< GUM_SCALAR > * >::cend(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::cendSafe(), gum::List< const gum::Potential< GUM_SCALAR > * >::cendSafe(), gum::Set< gum::Potential< GUM_SCALAR > * >::cendSafe(), gum::DAGCycleDetector::Change::Change(), gum::MultiDimWithOffset< GUM_SCALAR >::changeNotification(), gum::MultiDimDecorator< GUM_SCALAR >::changeNotification(), gum::MultiDimBucket< GUM_SCALAR >::changeNotification(), gum::BayesNet< double >::changePotential(), gum::BayesNet< double >::changeVariableLabel(), gum::BayesNet< double >::changeVariableName(), gum::ArcGraphPart::checkChildren__(), gum::MaxInducedWidthMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::checkConditions__(), gum::MaxParentsMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::checkConditions__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::checkConditions__(), gum::BayesNetFragment< GUM_SCALAR >::checkConsistency(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::checkIsomorphism__(), gum::FMDPFactory< GUM_SCALAR >::checkModalityInBag__(), gum::BayesNetFactory< GUM_SCALAR >::checkModalityInBag__(), gum::EdgeGraphPart::checkNeighbours__(), gum::ArcGraphPart::checkParents__(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::checkRedundancy__(), gum::E_GreedyDecider::checkState(), gum::InfluenceDiagramGenerator< GUM_SCALAR >::checkTemporalOrder__(), gum::BayesNetFactory< GUM_SCALAR >::checkVariableModality__(), gum::BayesNetFactory< GUM_SCALAR >::checkVariableName__(), gum::GraphicalModelInference< GUM_SCALAR >::chgEvidence(), gum::IMDDI< AttributeSelection, isScalar >::chgNodeBoundVar_(), gum::ITI< AttributeSelection, isScalar >::chgNodeBoundVar_(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::chgNodeBoundVar_(), gum::Instantiation::chgVal(), gum::Instantiation::chgVal__(), gum::O4DGContext::chgVarModality(), gum::Chi2::Chi2(), gum::MarkovBlanket::children(), gum::EssentialGraph::children(), gum::DAGmodel::children(), gum::ArcGraphPart::children(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::chooseCloseNodes__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::chooseNodes__(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::clean(), gum::PartialOrderedEliminationSequenceStrategy::clear(), gum::Estimator< GUM_SCALAR >::clear(), gum::DefaultJunctionTreeStrategy::clear(), gum::OrderedEliminationSequenceStrategy::clear(), gum::StaticTriangulation::clear(), gum::EliminationSequenceStrategy::clear(), gum::DefaultEliminationSequenceStrategy::clear(), gum::DiGraph::clear(), gum::UndiGraph::clear(), gum::LinkedList< gum::Parent >::clear(), gum::GraphicalModelInference< GUM_SCALAR >::clear(), gum::DefaultPartialOrderedEliminationSequenceStrategy::clear(), gum::MixedGraph::clear(), gum::RefPtr< Val >::clear(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::clear(), gum::Instantiation::clear(), gum::BayesNet< double >::clear(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::clear(), gum::NodeGraphPart::clear(), gum::Set< gum::Potential< GUM_SCALAR > * >::clear(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::clear(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::clear(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::clear(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::clear(), gum::List< const gum::Potential< GUM_SCALAR > * >::clear(), gum::SetIterator< Key >::clear(), gum::ListConstIterator< Val >::clear(), gum::ListConstIteratorSafe< Val >::clear(), gum::ArcGraphPart::clearArcs(), gum::EdgeGraphPart::clearEdges(), gum::NodeGraphPart::clearNodes(), gum::NodeGraphPart::clearNodes__(), gum::BayesNet< double >::clearPotentials__(), gum::AdaptiveRMaxPlaner::clearTables__(), gum::LinearApproximationPolicy< GUM_SCALAR >::combineAdd(), gum::LinearApproximationPolicy< GUM_SCALAR >::combineDiv(), gum::BinaryJoinTreeConverterDefault::combinedSize__(), gum::LinearApproximationPolicy< GUM_SCALAR >::combineMax(), gum::LinearApproximationPolicy< GUM_SCALAR >::combineMin(), gum::LinearApproximationPolicy< GUM_SCALAR >::combineMult(), gum::LinearApproximationPolicy< GUM_SCALAR >::combineSub(), gum::MultiDimSparse< GUM_SCALAR >::commitMultipleChanges_(), gum::MultiDimArray< GUM_SCALAR >::commitMultipleChanges_(), gum::MultiDimBucket< GUM_SCALAR >::commitMultipleChanges_(), gum::Potential< GUM_SCALAR >::complementVars_(), gum::MultiDimImplementation< std::string >::compressionRate(), gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::compute(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::compute(), gum::MultiDimBucket< GUM_SCALAR >::compute(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute__(), gum::SpanningForestPrim::compute__(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::compute__(), gum::GraphicalModelInference< GUM_SCALAR >::computeDomainSizes__(), gum::StaticTriangulation::computeEliminationTree__(), gum::SpanningForestPrim::computeInAComponent__(), gum::MultiDimWithOffset< GUM_SCALAR >::computeInstantiationValue_(), gum::DefaultJunctionTreeStrategy::computeJunctionTree__(), gum::ExactBNdistance< GUM_SCALAR >::computeKL_(), gum::GibbsBNdistance< GUM_SCALAR >::computeKL_(), gum::StaticTriangulation::computeMaxPrimeJunctionTree__(), gum::StaticTriangulation::computeMaxPrimeMergings__(), gum::LinearApproximationPolicy< GUM_SCALAR >::computeNbInterval_(), gum::StaticTriangulation::computeRecursiveThinning__(), gum::Chi2TestPolicy< GUM_SCALAR >::computeScore(), gum::GTestPolicy< GUM_SCALAR >::computeScore(), gum::LeastSquareTestPolicy< GUM_SCALAR >::computeScore(), gum::MultiDimBucket< GUM_SCALAR >::computeValue__(), gum::Estimator< GUM_SCALAR >::confidence(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::connect__(), gum::Set< gum::Potential< GUM_SCALAR > * >::constEnd4Statics(), gum::Set< gum::Potential< GUM_SCALAR > * >::constEndSafe4Statics(), gum::MultiDimDecorator< GUM_SCALAR >::contains(), gum::MultiDimBucket< GUM_SCALAR >::contains(), gum::MultiDimImplementation< std::string >::contains(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::contains(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::contains(), gum::SplayTree< Element >::contains(), gum::Set< gum::Potential< GUM_SCALAR > * >::contains(), gum::Instantiation::contains(), gum::MultiDimDecorator< GUM_SCALAR >::content(), gum::SamplingInference< GUM_SCALAR >::contextualize(), gum::ApproximationScheme::continueApproximationScheme(), gum::Rational< GUM_SCALAR >::continuedFracBest(), gum::Rational< GUM_SCALAR >::continuedFracFirst(), gum::BinaryJoinTreeConverterDefault::convert(), gum::BinaryJoinTreeConverterDefault::convertClique__(), gum::BinaryJoinTreeConverterDefault::convertConnectedComponent__(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::convertNode2Leaf_(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::copy(), gum::MultiDimContainer< GUM_SCALAR >::copy(), gum::SplayBinaryNode< Element >::copy_(), gum::SplayTree< Element >::copy_(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::copy__(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::copy__(), gum::List< const gum::Potential< GUM_SCALAR > * >::copy_elements__(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::copyAndMultiplyByScalar(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::copyAndReassign(), gum::DefaultJunctionTreeStrategy::copyFactory(), gum::OrderedEliminationSequenceStrategy::copyFactory(), gum::OrderedTriangulation::copyFactory(), gum::PartialOrderedTriangulation::copyFactory(), gum::DefaultEliminationSequenceStrategy::copyFactory(), gum::DefaultPartialOrderedEliminationSequenceStrategy::copyFactory(), gum::MultiDimArray< GUM_SCALAR >::copyFrom(), gum::MultiDimICIModel< GUM_SCALAR >::copyFrom(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::copyFrom(), gum::MultiDimContainer< GUM_SCALAR >::copyFrom(), gum::BayesNet< double >::copyPotentials__(), gum::SpanningForestPrim::costOfSpanningForest(), gum::ErrorsContainer::count(), gum::BayesNetFragment< GUM_SCALAR >::cpt(), gum::BayesNet< double >::cpt(), gum::BayesNetFactory< GUM_SCALAR >::cptDomainSize(), gum::List< const gum::Potential< GUM_SCALAR > * >::crbegin(), gum::List< const gum::Potential< GUM_SCALAR > * >::crbeginSafe(), gum::List< const gum::Potential< GUM_SCALAR > * >::createBucket__(), gum::DefaultJunctionTreeStrategy::createdClique(), gum::DefaultJunctionTreeStrategy::createdCliques(), gum::List< const gum::Potential< GUM_SCALAR > * >::createEmplaceBucket__(), gum::GraphicalModelInference< GUM_SCALAR >::createHardEvidence__(), gum::MultiDimFunctionGraphGenerator::createLeaf__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::createPartTree__(), gum::DefaultEliminationSequenceStrategy::createSimplicialSet__(), gum::DefaultPartialOrderedEliminationSequenceStrategy::createSimplicialSet__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::createTree__(), gum::List< const gum::Potential< GUM_SCALAR > * >::crend(), gum::List< const gum::Potential< GUM_SCALAR > * >::crendSafe(), gum::Chi2::criticalValue(), gum::Chi2::criticalValue__(), gum::SamplingInference< GUM_SCALAR >::currentPosterior(), gum::ApproximationScheme::currentTime(), gum::MarkovBlanket::dag(), gum::DAGmodel::dag(), gum::DAG::DAG(), gum::DAGCycleDetector::DAGCycleDetector(), gum::DAGmodel::DAGmodel(), gum::FixedAllocator::Chunk__::deallocat__(), gum::SmallObjectAllocator::deallocate(), gum::FixedAllocator::deallocate(), gum::InternalNode::deallocateNodeSons(), gum::FusionContext< true >::deassociateLeaf__(), gum::Instantiation::dec(), gum::Instantiation::decIn(), gum::Instantiation::decNotVar(), gum::LinearApproximationPolicy< GUM_SCALAR >::decode(), gum::LinearApproximationPolicy< GUM_SCALAR >::decode__(), gum::AggregatorDecomposition< GUM_SCALAR >::decomposeAggregator_(), gum::Instantiation::decOut(), gum::Instantiation::decVar(), gum::DefaultEliminationSequenceStrategy::DefaultEliminationSequenceStrategy(), gum::DefaultJunctionTreeStrategy::DefaultJunctionTreeStrategy(), gum::DefaultPartialOrderedEliminationSequenceStrategy::DefaultPartialOrderedEliminationSequenceStrategy(), gum::Chi2::degreesOfFreedom(), gum::DAGCycleDetector::delWeightedSet__(), gum::DAGmodel::descendants(), gum::ArcGraphPart::descendants(), gum::RefPtr< Val >::destroy__(), gum::Listener::detachSignal__(), gum::Sequence< NodeId >::diffSet(), gum::DiGraph::DiGraph(), gum::DiGraphListener::DiGraphListener(), gum::IBayesNet< double >::dim(), gum::IMarkovNet< GUM_SCALAR >::dim(), gum::ArcGraphPart::directedPath(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::directedPath__(), gum::ArcGraphPart::directedUnorientedPath(), gum::Directory::Directory(), gum::Dirichlet::Dirichlet(), gum::ApproximationScheme::disableEpsilon(), gum::ApproximationScheme::disableMaxIter(), gum::ApproximationScheme::disableMaxTime(), gum::ApproximationScheme::disableMinEpsilonRate(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::distance__(), gum::SimpleCPTDisturber< GUM_SCALAR >::disturbAugmCPT(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::disturbBN(), gum::SimpleCPTDisturber< GUM_SCALAR >::disturbReducCPT(), gum::RangeVariable::domain(), gum::LabelizedVariable::domain(), gum::MultiDimDecorator< GUM_SCALAR >::domainSize(), gum::MultiDimImplementation< std::string >::domainSize(), gum::Instantiation::domainSize(), gum::EliminationSequenceStrategy::domainSizes(), gum::GraphicalModelInference< GUM_SCALAR >::domainSizes(), gum::VariableSelector::downdateScore(), gum::IMDDI< AttributeSelection, isScalar >::downdateScore__(), gum::Potential< GUM_SCALAR >::draw(), gum::WeightedSampling< GUM_SCALAR >::draw_(), gum::MonteCarloSampling< GUM_SCALAR >::draw_(), gum::ImportanceSampling< GUM_SCALAR >::draw_(), gum::GibbsSampling< GUM_SCALAR >::draw_(), gum::GibbsOperator< GUM_SCALAR >::drawVarMonteCarlo__(), gum::dSeparation::dSeparation(), gum::DAG::dSeparation(), gum::E_GreedyDecider::E_GreedyDecider(), gum::EdgeGraphPart::EdgeGraphPart(), gum::EssentialGraph::edges(), gum::UGmodel::edges(), gum::EdgeGraphPart::edges(), gum::SpanningForestPrim::edgesInSpanningForest(), gum::Link< gum::Parent >::element(), gum::EliminationSequenceStrategy::EliminationSequenceStrategy(), gum::OrderedEliminationSequenceStrategy::eliminationUpdate(), gum::DefaultEliminationSequenceStrategy::eliminationUpdate(), gum::DefaultPartialOrderedEliminationSequenceStrategy::eliminationUpdate(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::emplace(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::emplace(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::emplace(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::emplace(), gum::Set< gum::Potential< GUM_SCALAR > * >::emplace(), gum::List< const gum::Potential< GUM_SCALAR > * >::emplace(), gum::List< const gum::Potential< GUM_SCALAR > * >::emplaceBack(), gum::List< const gum::Potential< GUM_SCALAR > * >::emplaceFront(), gum::MultiDimDecorator< GUM_SCALAR >::empty(), gum::MultiDimImplementation< std::string >::empty(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::empty(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::empty(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::empty(), gum::NodeGraphPart::empty(), gum::Set< gum::Potential< GUM_SCALAR > * >::empty(), gum::Instantiation::empty(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::empty(), gum::List< const gum::Potential< GUM_SCALAR > * >::empty(), gum::EliminationSequenceStrategy::empty_fill_ins__(), gum::ArcGraphPart::emptyArcs(), gum::EdgeGraphPart::emptyEdges(), gum::NodeGraphPart::emptyNodes(), gum::ApproximationScheme::enableEpsilon(), gum::ApproximationScheme::enableMaxIter(), gum::ApproximationScheme::enableMaxTime(), gum::ApproximationScheme::enableMinEpsilonRate(), gum::LinearApproximationPolicy< GUM_SCALAR >::encode(), gum::LinearApproximationPolicy< GUM_SCALAR >::encode__(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::end(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::end(), gum::NodeGraphPart::end(), gum::Set< gum::Potential< GUM_SCALAR > * >::end(), gum::List< const gum::Potential< GUM_SCALAR > * >::end(), gum::Instantiation::end(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::end4Statics(), gum::Set< gum::Potential< GUM_SCALAR > * >::end4Statics(), gum::FMDPFactory< GUM_SCALAR >::endActionDeclaration(), gum::FMDPFactory< GUM_SCALAR >::endCostDeclaration(), gum::FMDPFactory< GUM_SCALAR >::endDiscountDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::endFactorizedEntry(), gum::BayesNetFactory< GUM_SCALAR >::endFactorizedProbabilityDeclaration(), gum::MultiDimImplementation< std::string >::endMultipleChanges(), gum::MultiDimDecorator< GUM_SCALAR >::endMultipleChanges(), gum::BayesNetFactory< GUM_SCALAR >::endNetworkDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::endParentsDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::endRawProbabilityDeclaration(), gum::FMDPFactory< GUM_SCALAR >::endRewardDeclaration(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::endSafe(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::endSafe(), gum::NodeGraphPart::endSafe(), gum::List< const gum::Potential< GUM_SCALAR > * >::endSafe(), gum::Set< gum::Potential< GUM_SCALAR > * >::endSafe(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::endSafe4Statics(), gum::Set< gum::Potential< GUM_SCALAR > * >::endSafe4Statics(), gum::BayesNet< double >::endTopologyTransformation(), gum::FMDPFactory< GUM_SCALAR >::endTransitionDeclaration(), gum::FMDPFactory< GUM_SCALAR >::endVariableDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::endVariableDeclaration(), gum::Directory::entries(), gum::Potential< GUM_SCALAR >::entropy(), gum::ApproximationScheme::epsilon(), gum::MultiDimWithOffset< GUM_SCALAR >::erase(), gum::MultiDimSparse< GUM_SCALAR >::erase(), gum::MultiDimDecorator< GUM_SCALAR >::erase(), gum::MultiDimBucket< GUM_SCALAR >::erase(), gum::MultiDimBijArray< GUM_SCALAR >::erase(), gum::MultiDimArray< GUM_SCALAR >::erase(), gum::MultiDimImplementation< std::string >::erase(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::erase(), gum::Instantiation::erase(), gum::BayesNet< double >::erase(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::erase(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::erase(), gum::Set< gum::Potential< GUM_SCALAR > * >::erase(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::erase(), gum::List< const gum::Potential< GUM_SCALAR > * >::erase(), gum::Instantiation::erase__(), gum::List< const gum::Potential< GUM_SCALAR > * >::erase__(), gum::GraphicalModelInference< GUM_SCALAR >::eraseAllEvidence(), gum::JointTargetedInference< GUM_SCALAR >::eraseAllJointTargets(), gum::JointTargetedMNInference< GUM_SCALAR >::eraseAllJointTargets(), gum::JointTargetedInference< GUM_SCALAR >::eraseAllMarginalTargets(), gum::JointTargetedMNInference< GUM_SCALAR >::eraseAllMarginalTargets(), gum::JointTargetedInference< GUM_SCALAR >::eraseAllTargets(), gum::JointTargetedMNInference< GUM_SCALAR >::eraseAllTargets(), gum::List< const gum::Potential< GUM_SCALAR > * >::eraseAllVal(), gum::ArcGraphPart::eraseArc(), gum::DAGCycleDetector::eraseArc(), gum::BayesNet< double >::eraseArc(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::eraseArc__(), gum::MultiDimBucket< GUM_SCALAR >::eraseBuffer__(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::eraseByPos(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::eraseByPos(), gum::List< const gum::Potential< GUM_SCALAR > * >::eraseByVal(), gum::ArcGraphPart::eraseChildren(), gum::EdgeGraphPart::eraseEdge(), gum::GraphicalModelInference< GUM_SCALAR >::eraseEvidence(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::eraseFirst(), gum::NodeGraphPart::eraseHole__(), gum::JointTargetedInference< GUM_SCALAR >::eraseJointTarget(), gum::JointTargetedMNInference< GUM_SCALAR >::eraseJointTarget(), gum::EdgeGraphPart::eraseNeighbours(), gum::DiGraph::eraseNode(), gum::UndiGraph::eraseNode(), gum::MixedGraph::eraseNode(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::eraseNode(), gum::NodeGraphPart::eraseNode(), gum::ArcGraphPart::eraseParents(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::eraseSecond(), gum::ArcGraphPart::eraseSetOfArcs_(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::eraseTop(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::eraseTop(), gum::MultiDimBucket< GUM_SCALAR >::eraseVariable__(), gum::Instantiation::eraseWithMaster(), gum::ErrorsContainer::Error(), gum::EssentialGraph::EssentialGraph(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::establishVarOrder__(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::establishVarOrder__(), gum::Estimator< GUM_SCALAR >::Estimator(), gum::Estimator< GUM_SCALAR >::EV(), gum::FormulaPart::eval(), gum::AdaptiveRMaxPlaner::evalPolicy_(), gum::StructuredPlaner< double >::evalPolicy_(), gum::StructuredPlaner< double >::evalQaction_(), gum::TaxiSimulator::evalReward__(), gum::GraphicalModelInference< GUM_SCALAR >::evidence(), gum::JointTargetedInference< GUM_SCALAR >::evidenceJointImpact(), gum::JointTargetedMNInference< GUM_SCALAR >::evidenceJointImpact(), gum::ExactBNdistance< GUM_SCALAR >::ExactBNdistance(), gum::ErrorsContainer::Exception(), gum::DAGmodel::exists(), gum::UGmodel::exists(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::exists(), gum::NodeGraphPart::exists(), gum::Set< gum::Potential< GUM_SCALAR > * >::exists(), gum::List< const gum::Potential< GUM_SCALAR > * >::exists(), gum::DAGmodel::existsArc(), gum::ArcGraphPart::existsArc(), gum::UGmodel::existsEdge(), gum::EdgeGraphPart::existsEdge(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::existsFirst(), gum::NodeGraphPart::existsNode(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::existsSecond(), gum::SpanningForestPrim::exploreNode__(), gum::MultiDimICIModel< GUM_SCALAR >::externalWeight(), gum::Potential< GUM_SCALAR >::extract(), gum::MultiDimContainer< GUM_SCALAR >::extractFrom(), gum::StructuredPlaner< double >::extractOptimalPolicy_(), gum::DAGmodel::family(), gum::ArcGraphPart::family(), gum::Rational< GUM_SCALAR >::farey(), gum::BayesNet< double >::fastPrototype(), gum::SDYNA::feedback(), gum::MultiDimReadOnly< GUM_SCALAR >::fill(), gum::MultiDimSparse< GUM_SCALAR >::fill(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::fill(), gum::MultiDimBijArray< GUM_SCALAR >::fill(), gum::MultiDimArray< GUM_SCALAR >::fill(), gum::MultiDimDecorator< GUM_SCALAR >::fill(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::fillCPT(), gum::StaticTriangulation::fillIns(), gum::EliminationSequenceStrategy::fillIns(), gum::OrderedEliminationSequenceStrategy::fillIns(), gum::DefaultEliminationSequenceStrategy::fillIns(), gum::DefaultPartialOrderedEliminationSequenceStrategy::fillIns(), gum::BayesNetFactory< GUM_SCALAR >::fillProbaWithValuesTable__(), gum::Potential< GUM_SCALAR >::fillWith(), gum::Formula::finalize__(), gum::FMDPFactory< GUM_SCALAR >::finalizeFunctionGraph__(), gum::Potential< GUM_SCALAR >::findAll(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::findRetrogradeVariables__(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::findRetrogradeVariables__(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::first(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::first(), gum::BijectionIterator< int, int >::first(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::firstWithDefault(), gum::FixedAllocator::FixedAllocator(), gum::FMDPFactory< GUM_SCALAR >::fmdp(), gum::FMDPFactory< GUM_SCALAR >::FMDPFactory(), gum::FMDPSimulator::FMDPSimulator(), gum::Instantiation::forgetMaster(), gum::Formula::Formula(), gum::Formula::formula(), gum::FormulaPart::FormulaPart(), gum::LinearApproximationPolicy< GUM_SCALAR >::fromExact(), gum::MultiDimWithOffset< GUM_SCALAR >::fromOffset(), gum::SplayTree< Element >::front(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::front(), gum::List< const gum::Potential< GUM_SCALAR > * >::front(), gum::func2str(), gum::FormulaPart::function_argc__(), gum::FormulaPart::function_eval__(), gum::GammaLog2::GammaLog2(), gum::GammaLog2::gammaLog2(), gum::MultiDimFunctionGraphGenerator::generate(), gum::SimpleBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::generateBN(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::generateBN(), gum::O3prmBNReader< GUM_SCALAR >::generateBN__(), gum::SimpleCPTGenerator< GUM_SCALAR >::generateCPT(), gum::BayesNet< double >::generateCPT(), gum::BayesNet< double >::generateCPTs(), gum::InfluenceDiagramGenerator< GUM_SCALAR >::generateID(), gum::SimpleUTGenerator::generateUT(), gum::MultiDimFunctionGraphGenerator::generateVarPos__(), gum::MultiDimSparse< GUM_SCALAR >::get(), gum::MultiDimLogit< GUM_SCALAR >::get(), gum::MultiDimNoisyORNet< GUM_SCALAR >::get(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::get(), gum::MultiDimNoisyAND< GUM_SCALAR >::get(), gum::MultiDimContainer< GUM_SCALAR >::get(), gum::MultiDimBijArray< GUM_SCALAR >::get(), gum::MultiDimDecorator< GUM_SCALAR >::get(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::get(), gum::MultiDimBucket< GUM_SCALAR >::get(), gum::MultiDimReadOnly< GUM_SCALAR >::get_(), gum::MultiDimSparse< GUM_SCALAR >::get_(), gum::MultiDimBijArray< GUM_SCALAR >::get_(), gum::MultiDimArray< GUM_SCALAR >::get_(), gum::MultiDimDecorator< GUM_SCALAR >::get_(), gum::MultiDimBucket< GUM_SCALAR >::get_(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::get_(), gum::List< const gum::Potential< GUM_SCALAR > * >::getBucket__(), gum::ListConstIterator< Val >::getBucket__(), gum::ListConstIteratorSafe< Val >::getBucket__(), gum::MultiDimArray< GUM_SCALAR >::getByOffset(), gum::IndexedTree< Key, Data >::getData(), gum::AggregatorDecomposition< GUM_SCALAR >::getDecomposedAggregator(), gum::getDynamicThreadsNumber(), gum::SplayBinaryNode< Element >::getElement(), gum::O3prmBNReader< GUM_SCALAR >::getEntityName__(), gum::SplayBinaryNode< Element >::getFd(), gum::SplayBinaryNode< Element >::getFg(), gum::O3prmBNReader< GUM_SCALAR >::getInstanceName__(), gum::List< const gum::Potential< GUM_SCALAR > * >::getIthBucket__(), gum::MultiDimBucket< GUM_SCALAR >::getMasterRef(), gum::MultiDimContainer< GUM_SCALAR >::getMasterRef(), gum::AggregatorDecomposition< GUM_SCALAR >::getMaximumArity(), gum::getMaxModality(), gum::getMaxNumberOfThreads(), gum::getNestedParallelism(), gum::IndexedTree< Key, Data >::getNode(), gum::getNumberOfLogicalProcessors(), gum::getNumberOfRunningThreads(), gum::MultiDimWithOffset< GUM_SCALAR >::getOffs_(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::getReducedAndOrderedInstance(), gum::getThreadNumber(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::getTreeInstance(), gum::O3prmBNReader< GUM_SCALAR >::getVariableName__(), gum::GibbsBNdistance< GUM_SCALAR >::GibbsBNdistance(), gum::GibbsOperator< GUM_SCALAR >::GibbsSample__(), gum::UGmodel::graph(), gum::EliminationSequenceStrategy::graph(), gum::GraphicalModel::GraphicalModel(), gum::GraphicalModelInference< GUM_SCALAR >::GraphicalModelInference(), gum::Instantiation::hamming(), gum::GraphicalModelInference< GUM_SCALAR >::hardEvidence(), gum::GraphicalModelInference< GUM_SCALAR >::hardEvidenceNodes(), gum::DAGCycleDetector::hasCycleFromAddition(), gum::DAGCycleDetector::hasCycleFromModifications(), gum::DAGCycleDetector::hasCycleFromReversal(), gum::DiGraph::hasDirectedPath(), gum::GraphicalModelInference< GUM_SCALAR >::hasEvidence(), gum::GraphicalModelInference< GUM_SCALAR >::hasHardEvidence(), gum::Set< gum::Potential< GUM_SCALAR > * >::hashMap(), gum::AbstractSimulator::hasReachEnd(), gum::MarkovBlanket::hasSameStructure(), gum::UGmodel::hasSameStructure(), gum::DAGmodel::hasSameStructure(), gum::GraphicalModelInference< GUM_SCALAR >::hasSoftEvidence(), gum::EdgeGraphPart::hasUndirectedPath(), gum::DAGCycleDetector::Change::head(), gum::LinearApproximationPolicy< GUM_SCALAR >::highLimit(), gum::ApproximationScheme::history(), gum::JointTargetedInference< GUM_SCALAR >::I(), gum::JointTargetedMNInference< GUM_SCALAR >::I(), gum::IApproximationSchemeConfiguration::IApproximationSchemeConfiguration(), gum::IBayesNet< double >::IBayesNet(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::IBayesNetGenerator(), gum::BayesNetFragment< GUM_SCALAR >::idFromName(), gum::BayesNet< double >::idFromName(), gum::FMDPFactory< GUM_SCALAR >::illegalStateError__(), gum::BayesNetFactory< GUM_SCALAR >::illegalStateError__(), gum::IMarkovNet< GUM_SCALAR >::IMarkovNet(), gum::IMDDI< AttributeSelection, isScalar >::IMDDI(), gum::Instantiation::inc(), gum::Instantiation::incIn(), gum::Instantiation::incNotVar(), gum::Instantiation::incOut(), gum::BayesNetFactory< GUM_SCALAR >::increment__(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::IncrementalGraphLearner(), gum::StatesCounter::incState(), gum::StatesCounter::incState__(), gum::Instantiation::incVar(), gum::IndexedTree< Key, Data >::IndexedTree(), gum::InfluenceDiagramGenerator< GUM_SCALAR >::InfluenceDiagramGenerator(), gum::NodeGraphPart::inHoles__(), gum::FixedAllocator::Chunk__::init__(), gum::Instantiation::init__(), gum::ApproximationScheme::initApproximationScheme(), gum::Formula::initialise__(), gum::E_GreedyDecider::initialize(), gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::initialize(), gum::AdaptiveRMaxPlaner::initialize(), gum::StructuredPlaner< double >::initialize(), gum::SDYNA::initialize(), gum::MultiDimBucket< GUM_SCALAR >::initializeBuffer__(), gum::FMDPFactory< GUM_SCALAR >::initializeFunctionGraph__(), gum::initRandom(), gum::OrderedTriangulation::initTriangulation_(), gum::PartialOrderedTriangulation::initTriangulation_(), gum::StaticTriangulation::initTriangulation_(), gum::AdaptiveRMaxPlaner::initVFunction_(), gum::StructuredPlaner< double >::initVFunction_(), gum::Instantiation::inOverflow(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::insert(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::insert(), gum::Set< gum::Potential< GUM_SCALAR > * >::insert(), gum::SplayTree< Element >::insert(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::insert(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::insert(), gum::List< const gum::Potential< GUM_SCALAR > * >::insert(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::insert__(), gum::List< const gum::Potential< GUM_SCALAR > * >::insert__(), gum::List< const gum::Potential< GUM_SCALAR > * >::insertAfter__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::insertArc__(), gum::List< const gum::Potential< GUM_SCALAR > * >::insertBefore__(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::insertInternalNode_(), gum::IMDDI< AttributeSelection, isScalar >::insertLeafInFunctionGraph__(), gum::IMDDI< AttributeSelection, isScalar >::insertLeafNode_(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::insertLeafNode_(), gum::IndexedTree< Key, Data >::insertNode(), gum::ITI< AttributeSelection, isScalar >::insertNode_(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::insertNode_(), gum::ITI< AttributeSelection, isScalar >::insertNodeInFunctionGraph__(), gum::StatesChecker::insertState__(), gum::ITI< AttributeSelection, isScalar >::insertTerminalNode__(), gum::BayesNetFragment< GUM_SCALAR >::installArc_(), gum::BayesNetFragment< GUM_SCALAR >::installAscendants(), gum::BayesNetFragment< GUM_SCALAR >::installCPT(), gum::BayesNetFragment< GUM_SCALAR >::installCPT_(), gum::BayesNetFragment< GUM_SCALAR >::installMarginal(), gum::BayesNetFragment< GUM_SCALAR >::installNode(), gum::SmallObjectAllocator::instance(), gum::Instantiation::Instantiation(), gum::int2Pow(), gum::InternalNode::InternalNode(), gum::intPow(), gum::Potential< GUM_SCALAR >::inverse(), gum::MultiDimImplementation< std::string >::invert_(), gum::TaxiSimulator::isAtDestination__(), gum::TaxiSimulator::isAtMeetPoint__(), gum::MultiDimBucket< GUM_SCALAR >::isBucketEmpty(), gum::MultiDimImplementation< std::string >::isCommitNeeded_(), gum::Directory::isDir(), gum::ApproximationScheme::isEnabledEpsilon(), gum::ApproximationScheme::isEnabledMaxIter(), gum::ApproximationScheme::isEnabledMaxTime(), gum::ApproximationScheme::isEnabledMinEpsilonRate(), gum::ListConstIterator< Val >::isEnd(), gum::ListConstIteratorSafe< Val >::isEnd(), gum::JointTargetedMNInference< GUM_SCALAR >::isExactJointComputable_(), gum::GraphicalModelInference< GUM_SCALAR >::isHardEvidence__(), gum::UGmodel::isIndependent(), gum::DAGmodel::isIndependent(), gum::GraphicalModelInference< GUM_SCALAR >::isInferenceDone(), gum::GraphicalModelInference< GUM_SCALAR >::isInferenceOutdatedPotentials(), gum::GraphicalModelInference< GUM_SCALAR >::isInferenceOutdatedStructure(), gum::GraphicalModelInference< GUM_SCALAR >::isInferenceReady(), gum::MultiDimImplementation< std::string >::isInMultipleChangeMethod_(), gum::BayesNetFragment< GUM_SCALAR >::isInstalledNode(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::isInternalNode(), gum::JointTargetedInference< GUM_SCALAR >::isJointTarget(), gum::JointTargetedMNInference< GUM_SCALAR >::isJointTarget(), gum::FormulaPart::isLeftAssociative(), gum::Instantiation::isMaster(), gum::Potential< GUM_SCALAR >::isNonZeroMap(), gum::OrderedEliminationSequenceStrategy::isOrderNeeded(), gum::OrderedEliminationSequenceStrategy::isOrderNeeded__(), gum::PartialOrderedEliminationSequenceStrategy::isPartialOrderNeeded(), gum::PartialOrderedEliminationSequenceStrategy::isPartialOrderNeeded_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::isPolytree__(), gum::Set< gum::Potential< GUM_SCALAR > * >::isProperSubsetOf(), gum::Set< gum::Potential< GUM_SCALAR > * >::isProperSupersetOf(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::isReducedAndOrdered(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::isRedundant__(), gum::FormulaPart::isRightAssociative(), gum::Instantiation::isSlave(), gum::Set< gum::Potential< GUM_SCALAR > * >::isSubsetOrEqual(), gum::Set< gum::Potential< GUM_SCALAR > * >::isSupersetOrEqual(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::isTerminalNode(), gum::Formula::isUnaryOperator__(), gum::Directory::isValid(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::iteration(), gum::ITI< AttributeSelection, isScalar >::ITI(), gum::SplayBinaryNode< Element >::join(), gum::SplayTree< Element >::join(), gum::JointTargetedInference< GUM_SCALAR >::jointMutualInformation(), gum::JointTargetedMNInference< GUM_SCALAR >::jointMutualInformation(), gum::JointTargetedInference< GUM_SCALAR >::jointPosterior(), gum::JointTargetedMNInference< GUM_SCALAR >::jointPosterior(), gum::IBayesNet< double >::jointProbability(), gum::JointTargetedInference< GUM_SCALAR >::jointTargets(), gum::JointTargetedMNInference< GUM_SCALAR >::jointTargets(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::jump_multi__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::jump_poly__(), gum::DefaultJunctionTreeStrategy::junctionTree(), gum::JunctionTreeStrategy::JunctionTreeStrategy(), gum::O4DGContext::key(), gum::Potential< GUM_SCALAR >::KL(), gum::LeafAggregator::LeafAggregator(), gum::LeafAggregator::leavesMap(), gum::LeafPair::likelyhood(), gum::LinearApproximationPolicy< GUM_SCALAR >::LinearApproximationPolicy(), gum::Link< gum::Parent >::Link(), gum::LinkedList< gum::Parent >::LinkedList(), gum::LinkedList< gum::Parent >::list(), gum::List< const gum::Potential< GUM_SCALAR > * >::List(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::ListBucket(), gum::ListConstIterator< Val >::ListConstIterator(), gum::ListConstIteratorSafe< Val >::ListConstIteratorSafe(), gum::Listener::Listener(), gum::ListIterator< Val >::ListIterator(), gum::ListIteratorSafe< Val >::ListIteratorSafe(), gum::Set< gum::Potential< GUM_SCALAR > * >::listMap(), gum::Potential< GUM_SCALAR >::log2(), gum::IBayesNet< double >::log2JointProbability(), gum::SamplingInference< GUM_SCALAR >::loopApproxInference_(), gum::LinearApproximationPolicy< GUM_SCALAR >::lowLimit(), gum::LPNewmultiPotential(), gum::LPNewprojPotential(), gum::StructuredPlaner< double >::makeArgMax_(), gum::GraphicalModelInference< GUM_SCALAR >::makeInference(), gum::LoopySamplingInference< GUM_SCALAR, APPROX >::makeInference_(), gum::SamplingInference< GUM_SCALAR >::makeInference_(), gum::AdaptiveRMaxPlaner::makePlanning(), gum::StructuredPlaner< double >::makePlanning(), gum::SDYNA::makePlanning(), gum::AdaptiveRMaxPlaner::makeRMaxFunctionGraphs__(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::manager(), gum::List< const gum::Potential< GUM_SCALAR > * >::map(), gum::Potential< GUM_SCALAR >::margMaxIn(), gum::Potential< GUM_SCALAR >::margMaxOut(), gum::Potential< GUM_SCALAR >::margMinIn(), gum::Potential< GUM_SCALAR >::margMinOut(), gum::Potential< GUM_SCALAR >::margProdIn(), gum::Potential< GUM_SCALAR >::margProdOut(), gum::Potential< GUM_SCALAR >::margSumIn(), gum::Potential< GUM_SCALAR >::margSumOut(), gum::BinaryJoinTreeConverterDefault::markConnectedComponent__(), gum::MarkovBlanket::MarkovBlanket(), gum::MarkovNetInference< GUM_SCALAR >::MarkovNetInference(), gum::Instantiation::masterChangeNotification__(), gum::Instantiation::masterDecNotification__(), gum::Instantiation::masterFirstNotification__(), gum::Instantiation::masterIncNotification__(), gum::Instantiation::masterLastNotification__(), gum::Potential< GUM_SCALAR >::max(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::maxArcs(), gum::StructuredPlaner< double >::maximiseQactions_(), gum::TreeOperatorStrategy< GUM_SCALAR >::maximize(), gum::MDDOperatorStrategy< GUM_SCALAR >::maximize(), gum::MaxInducedWidthMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::MaxInducedWidthMCBayesNetGenerator(), gum::ApproximationScheme::maxIter(), gum::Triangulation::maxLog10CliqueDomainSize(), gum::MaxInducedWidthMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::maxlog10InducedWidth(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::maxModality(), gum::Potential< GUM_SCALAR >::maxNonOne(), gum::IMarkovNet< GUM_SCALAR >::maxNonOneParam(), gum::IBayesNet< double >::maxNonOneParam(), gum::IBayesNet< double >::maxParam(), gum::IMarkovNet< GUM_SCALAR >::maxParam(), gum::MaxParentsMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::maxParents(), gum::MaxParentsMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::MaxParentsMCBayesNetGenerator(), gum::ApproximationScheme::maxTime(), gum::IBayesNet< double >::maxVarDomainSize(), gum::IMarkovNet< GUM_SCALAR >::maxVarDomainSize(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::MCBayesNetGenerator(), gum::MDDOperatorStrategy< GUM_SCALAR >::MDDOperatorStrategy(), gum::IApproximationSchemeConfiguration::messageApproximationScheme(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::migrateNode_(), gum::Potential< GUM_SCALAR >::min(), gum::ApproximationScheme::minEpsilonRate(), gum::IBayesNet< double >::minimalCondSet(), gum::IMarkovNet< GUM_SCALAR >::minimalCondSet(), gum::IMarkovNet< GUM_SCALAR >::minimalCondSetVisit__(), gum::IBayesNet< double >::minimalCondSetVisitDn__(), gum::IBayesNet< double >::minimalCondSetVisitUp__(), gum::StructuredPlaner< double >::minimiseFunctions_(), gum::TreeOperatorStrategy< GUM_SCALAR >::minimize(), gum::MDDOperatorStrategy< GUM_SCALAR >::minimize(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::minimizeSize(), gum::Potential< GUM_SCALAR >::minNonZero(), gum::IBayesNet< double >::minNonZeroParam(), gum::IMarkovNet< GUM_SCALAR >::minNonZeroParam(), gum::IBayesNet< double >::minParam(), gum::IMarkovNet< GUM_SCALAR >::minParam(), gum::EssentialGraph::mixedGraph(), gum::MixedGraph::MixedGraph(), gum::MixedGraphListener::MixedGraphListener(), gum::MixedGraph::mixedOrientedPath(), gum::MixedGraph::mixedUnorientedPath(), gum::MarkovNetInference< GUM_SCALAR >::MN(), gum::GraphicalModelInference< GUM_SCALAR >::model(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::model(), gum::GibbsOperator< GUM_SCALAR >::monteCarloSample(), gum::GibbsSampling< GUM_SCALAR >::monteCarloSample_(), gum::DAG::moralGraph(), gum::DAGmodel::moralGraph(), gum::DAG::moralizedAncestralGraph(), gum::DAGmodel::moralizedAncestralGraph(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::moveTo(), gum::JunctionTreeStrategy::moveTriangulation(), gum::MultiDimAdressable::MultiDimAdressable(), gum::MultiDimArray< GUM_SCALAR >::MultiDimArray(), gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray(), gum::MultiDimBucket< GUM_SCALAR >::MultiDimBucket(), gum::MultiDimContainer< GUM_SCALAR >::MultiDimContainer(), gum::MultiDimDecorator< GUM_SCALAR >::MultiDimDecorator(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::MultiDimFunctionGraph(), gum::MultiDimFunctionGraphGenerator::MultiDimFunctionGraphGenerator(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::MultiDimFunctionGraphManager(), gum::MultiDimFunctionGraphROManager< GUM_SCALAR, TerminalNodePolicy >::MultiDimFunctionGraphROManager(), gum::MultiDimFunctionGraphTreeManager< GUM_SCALAR, TerminalNodePolicy >::MultiDimFunctionGraphTreeManager(), gum::MultiDimICIModel< GUM_SCALAR >::MultiDimICIModel(), gum::MultiDimImplementation< std::string >::MultiDimImplementation(), gum::MultiDimLogit< GUM_SCALAR >::MultiDimLogit(), gum::MultiDimNoisyAND< GUM_SCALAR >::MultiDimNoisyAND(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::MultiDimNoisyORCompound(), gum::MultiDimNoisyORNet< GUM_SCALAR >::MultiDimNoisyORNet(), gum::MultiDimReadOnly< GUM_SCALAR >::MultiDimReadOnly(), gum::MultiDimBucket< GUM_SCALAR >::multidims(), gum::MultiDimSparse< GUM_SCALAR >::MultiDimSparse(), gum::MultiDimWithOffset< GUM_SCALAR >::MultiDimWithOffset(), gum::TreeOperatorStrategy< GUM_SCALAR >::multiply(), gum::MDDOperatorStrategy< GUM_SCALAR >::multiply(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::MultiPriorityQueue(), gum::MultiDimSparse< GUM_SCALAR >::name(), gum::MultiDimLogit< GUM_SCALAR >::name(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::name(), gum::MultiDimNoisyORNet< GUM_SCALAR >::name(), gum::MultiDimNoisyAND< GUM_SCALAR >::name(), gum::MultiDimArray< GUM_SCALAR >::name(), gum::MultiDimICIModel< GUM_SCALAR >::name(), gum::MultiDimBijArray< GUM_SCALAR >::name(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::name(), gum::MultiDimBucket< GUM_SCALAR >::name(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::nbCall(), gum::MultiDimDecorator< GUM_SCALAR >::nbrDim(), gum::MultiDimImplementation< std::string >::nbrDim(), gum::Instantiation::nbrDim(), gum::GraphicalModelInference< GUM_SCALAR >::nbrEvidence(), gum::GraphicalModelInference< GUM_SCALAR >::nbrHardEvidence(), gum::ApproximationScheme::nbrIterations(), gum::JointTargetedInference< GUM_SCALAR >::nbrJointTargets(), gum::JointTargetedMNInference< GUM_SCALAR >::nbrJointTargets(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::nbrNodes(), gum::GraphicalModelInference< GUM_SCALAR >::nbrSoftEvidence(), gum::InternalNode::nbSons(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::nbVarRetro(), gum::EssentialGraph::neighbours(), gum::UGmodel::neighbours(), gum::EdgeGraphPart::neighbours(), gum::Potential< GUM_SCALAR >::new_abs(), gum::Potential< GUM_SCALAR >::new_log2(), gum::Potential< GUM_SCALAR >::new_sq(), gum::DefaultJunctionTreeStrategy::newFactory(), gum::OrderedEliminationSequenceStrategy::newFactory(), gum::MultiDimSparse< GUM_SCALAR >::newFactory(), gum::MultiDimArray< GUM_SCALAR >::newFactory(), gum::MultiDimLogit< GUM_SCALAR >::newFactory(), gum::MultiDimNoisyORNet< GUM_SCALAR >::newFactory(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::newFactory(), gum::MultiDimNoisyAND< GUM_SCALAR >::newFactory(), gum::OrderedTriangulation::newFactory(), gum::PartialOrderedTriangulation::newFactory(), gum::Potential< GUM_SCALAR >::newFactory(), gum::DefaultEliminationSequenceStrategy::newFactory(), gum::DefaultPartialOrderedEliminationSequenceStrategy::newFactory(), gum::MultiDimBijArray< GUM_SCALAR >::newFactory(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::newFactory(), gum::MultiDimBucket< GUM_SCALAR >::newFactory(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::next(), gum::Link< gum::Parent >::nextLink(), gum::NodeGraphPart::nextNodeId(), gum::OrderedEliminationSequenceStrategy::nextNodeToEliminate(), gum::DefaultEliminationSequenceStrategy::nextNodeToEliminate(), gum::DefaultPartialOrderedEliminationSequenceStrategy::nextNodeToEliminate(), gum::GibbsOperator< GUM_SCALAR >::nextSample(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::node(), gum::NodeGraphPart::NodeGraphPart(), gum::NodeGraphPartIterator::NodeGraphPartIterator(), gum::NodeGraphPartIteratorSafe::NodeGraphPartIteratorSafe(), gum::BayesNetFragment< GUM_SCALAR >::nodeId(), gum::BayesNet< double >::nodeId(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::nodeRedundancyCheck_(), gum::DAGmodel::nodes(), gum::UGmodel::nodes(), gum::MarkovBlanket::nodes(), gum::EssentialGraph::nodes(), gum::NodeGraphPart::nodes(), gum::GraphicalModel::nodeset(), gum::DefaultPartialOrderedEliminationSequenceStrategy::nodeToEliminate__(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::nodeValue(), gum::InternalNode::nodeVar(), gum::Potential< GUM_SCALAR >::noising(), gum::Potential< GUM_SCALAR >::normalize(), gum::Potential< GUM_SCALAR >::normalizeAsCPT(), gum::MultiDimDecorator< GUM_SCALAR >::notifyChange(), gum::O3prmBNReader< GUM_SCALAR >::O3prmBNReader(), gum::O4DGContext::O4DGContext(), gum::ImportanceSampling< GUM_SCALAR >::onContextualize_(), gum::SamplingInference< GUM_SCALAR >::onEvidenceAdded_(), gum::SamplingInference< GUM_SCALAR >::onEvidenceChanged_(), gum::JointTargetedInference< GUM_SCALAR >::onModelChanged_(), gum::JointTargetedMNInference< GUM_SCALAR >::onModelChanged_(), gum::SamplingInference< GUM_SCALAR >::onStateChanged_(), gum::RefPtr< Val >::operator bool(), gum::O4DGContext::operator delete(), gum::Parent::operator delete(), gum::Link< gum::Parent >::operator delete(), gum::LinkedList< gum::Parent >::operator delete(), gum::InternalNode::operator delete(), gum::O4DGContext::operator new(), gum::Parent::operator new(), gum::Link< gum::Parent >::operator new(), gum::LinkedList< gum::Parent >::operator new(), gum::InternalNode::operator new(), gum::Parent::operator!=(), gum::NodeGraphPartIterator::operator!=(), gum::EdgeGraphPart::operator!=(), gum::ArcGraphPart::operator!=(), gum::UndiGraph::operator!=(), gum::DiGraph::operator!=(), gum::IBayesNet< double >::operator!=(), gum::IMarkovNet< GUM_SCALAR >::operator!=(), gum::MixedGraph::operator!=(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::operator!=(), gum::DAGCycleDetector::operator!=(), gum::RefPtr< Val >::operator!=(), gum::NodeGraphPart::operator!=(), gum::MultiDimContainer< GUM_SCALAR >::operator!=(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator!=(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::operator!=(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator!=(), gum::SetIterator< Key >::operator!=(), gum::SequenceIteratorSafe< NodeId >::operator!=(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::operator!=(), gum::ListConstIterator< Val >::operator!=(), gum::BijectionIterator< int, int >::operator!=(), gum::List< const gum::Potential< GUM_SCALAR > * >::operator!=(), gum::ListConstIteratorSafe< Val >::operator!=(), gum::HashFunc< std::tuple< unsigned int, unsigned int, unsigned int > >::operator()(), gum::GammaLog2::operator()(), gum::Dirichlet::operator()(), gum::HashFunc< Set< T, Alloc > >::operator()(), gum::HashFunc< Instantiation >::operator()(), gum::NodeGraphPartIterator::operator*(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::operator*(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator*(), gum::RefPtr< Val >::operator*(), gum::operator*(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator*(), gum::SetIterator< Key >::operator*(), gum::SequenceIteratorSafe< NodeId >::operator*(), gum::ListConstIterator< Val >::operator*(), gum::ListIterator< Val >::operator*(), gum::ListConstIteratorSafe< Val >::operator*(), gum::ListIteratorSafe< Val >::operator*(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator*=(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator+(), gum::operator+(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator+(), gum::SetIterator< Key >::operator+(), gum::SequenceIteratorSafe< NodeId >::operator+(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::operator+(), gum::ListConstIterator< Val >::operator+(), gum::BijectionIterator< int, int >::operator+(), gum::ListIterator< Val >::operator+(), gum::ListConstIteratorSafe< Val >::operator+(), gum::ListIteratorSafe< Val >::operator+(), gum::NodeGraphPartIterator::operator++(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator++(), gum::Instantiation::operator++(), gum::SetIterator< Key >::operator++(), gum::SequenceIteratorSafe< NodeId >::operator++(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::operator++(), gum::ListConstIterator< Val >::operator++(), gum::BijectionIterator< int, int >::operator++(), gum::ListIterator< Val >::operator++(), gum::ListConstIteratorSafe< Val >::operator++(), gum::ListIteratorSafe< Val >::operator++(), gum::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::operator+=(), gum::ContingencyTable< Idx, GUM_SCALAR >::operator+=(), gum::NodeDatabase< AttributeSelection, isScalar >::operator+=(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator+=(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator+=(), gum::Instantiation::operator+=(), gum::SetIterator< Key >::operator+=(), gum::List< const gum::Potential< GUM_SCALAR > * >::operator+=(), gum::SequenceIteratorSafe< NodeId >::operator+=(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::operator+=(), gum::ListConstIterator< Val >::operator+=(), gum::BijectionIterator< int, int >::operator+=(), gum::ListIterator< Val >::operator+=(), gum::ListConstIteratorSafe< Val >::operator+=(), gum::ListIteratorSafe< Val >::operator+=(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator-(), gum::operator-(), gum::SequenceIteratorSafe< NodeId >::operator-(), gum::ListConstIterator< Val >::operator-(), gum::ListIterator< Val >::operator-(), gum::ListConstIteratorSafe< Val >::operator-(), gum::ListIteratorSafe< Val >::operator-(), gum::Instantiation::operator--(), gum::SequenceIteratorSafe< NodeId >::operator--(), gum::ListConstIterator< Val >::operator--(), gum::ListIterator< Val >::operator--(), gum::ListConstIteratorSafe< Val >::operator--(), gum::ListIteratorSafe< Val >::operator--(), gum::Instantiation::operator-=(), gum::SequenceIteratorSafe< NodeId >::operator-=(), gum::ListConstIterator< Val >::operator-=(), gum::ListIterator< Val >::operator-=(), gum::ListConstIteratorSafe< Val >::operator-=(), gum::ListIteratorSafe< Val >::operator-=(), gum::RefPtr< Val >::operator->(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator->(), gum::SetIterator< Key >::operator->(), gum::SequenceIteratorSafe< NodeId >::operator->(), gum::ListConstIterator< Val >::operator->(), gum::ListIterator< Val >::operator->(), gum::ListConstIteratorSafe< Val >::operator->(), gum::ListIteratorSafe< Val >::operator->(), gum::operator/(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::operator<<(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator<<(), gum::operator<<(), gum::EssentialGraph::operator=(), gum::BarrenNodesFinder::operator=(), gum::MultiDimAdressable::operator=(), gum::DAGCycleDetector::Change::operator=(), gum::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::operator=(), gum::Timer::operator=(), gum::IMarkovNet< GUM_SCALAR >::operator=(), gum::IBayesNet< double >::operator=(), gum::Parent::operator=(), gum::MultiDimDecorator< GUM_SCALAR >::operator=(), gum::ApproximationSchemeListener::operator=(), gum::ProgressListener::operator=(), gum::Potential< GUM_SCALAR >::operator=(), gum::Dirichlet::operator=(), gum::NodeGraphPartIterator::operator=(), gum::IndexedTree< Key, Data >::operator=(), gum::DiGraphListener::operator=(), gum::EdgeGraphPart::operator=(), gum::UndiGraphListener::operator=(), gum::MultiDimBijArray< GUM_SCALAR >::operator=(), gum::MultiDimContainer< GUM_SCALAR >::operator=(), gum::ArcGraphPart::operator=(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::operator=(), gum::Instantiation::operator=(), gum::MixedGraphListener::operator=(), gum::Directory::operator=(), gum::DAG::operator=(), gum::UndiGraph::operator=(), gum::DAGCycleDetector::ArcAdd::operator=(), gum::DiGraph::operator=(), gum::BayesNet< double >::operator=(), gum::UGmodel::operator=(), gum::FormulaPart::operator=(), gum::MixedGraph::operator=(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::operator=(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::operator=(), gum::NodeGraphPartIteratorSafe::operator=(), gum::DAGCycleDetector::ArcDel::operator=(), gum::GraphicalModel::operator=(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::operator=(), gum::RefPtr< Val >::operator=(), gum::DAGCycleDetector::ArcReverse::operator=(), gum::DAGmodel::operator=(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::operator=(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::operator=(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator=(), gum::DAGCycleDetector::operator=(), gum::SplayTree< Element >::operator=(), gum::NodeGraphPart::operator=(), gum::FMDPFactory< GUM_SCALAR >::operator=(), gum::Formula::operator=(), gum::BayesNetFactory< GUM_SCALAR >::operator=(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator=(), gum::PriorityQueue< gum::Edge, float >::operator=(), gum::Sequence< NodeId >::operator=(), gum::SetIterator< Key >::operator=(), gum::List< const gum::Potential< GUM_SCALAR > * >::operator=(), gum::SequenceIteratorSafe< NodeId >::operator=(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::operator=(), gum::ListConstIterator< Val >::operator=(), gum::BijectionIterator< int, int >::operator=(), gum::ListIterator< Val >::operator=(), gum::Bijection< NodeId, std::size_t >::operator=(), gum::ListConstIteratorSafe< Val >::operator=(), gum::ListIteratorSafe< Val >::operator=(), gum::Parent::operator==(), gum::NodeGraphPartIterator::operator==(), gum::EdgeGraphPart::operator==(), gum::ArcGraphPart::operator==(), gum::UndiGraph::operator==(), gum::DiGraph::operator==(), gum::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::operator==(), gum::IBayesNet< double >::operator==(), gum::IMarkovNet< GUM_SCALAR >::operator==(), gum::MixedGraph::operator==(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::operator==(), gum::DAGCycleDetector::operator==(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator==(), gum::RefPtr< Val >::operator==(), gum::NodeGraphPart::operator==(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::operator==(), gum::MultiDimContainer< GUM_SCALAR >::operator==(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::operator==(), gum::Instantiation::operator==(), gum::SetIterator< Key >::operator==(), gum::SequenceIteratorSafe< NodeId >::operator==(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::operator==(), gum::ListConstIterator< Val >::operator==(), gum::BijectionIterator< int, int >::operator==(), gum::List< const gum::Potential< GUM_SCALAR > * >::operator==(), gum::ListConstIteratorSafe< Val >::operator==(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::operator>>(), gum::Set< gum::Potential< GUM_SCALAR > * >::operator>>(), gum::MultiDimContainer< GUM_SCALAR >::operator[](), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::operator[](), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::operator[](), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::operator[](), gum::SplayTree< Element >::operator[](), gum::List< const gum::Potential< GUM_SCALAR > * >::operator[](), gum::FormulaPart::operator_argc__(), gum::FormulaPart::operator_eval__(), gum::ListConstIteratorSafe< Val >::opMinus__(), gum::ListConstIteratorSafe< Val >::opPlus__(), gum::StructuredPlaner< double >::optimalPolicy2String(), gum::OrderedEliminationSequenceStrategy::order(), gum::OrderedEliminationSequenceStrategy::OrderedEliminationSequenceStrategy(), gum::OrderedTriangulation::OrderedTriangulation(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::p(), gum::Dirichlet::param(), gum::Parent::Parent(), gum::Directory::parent(), gum::MarkovBlanket::parents(), gum::EssentialGraph::parents(), gum::DAGmodel::parents(), gum::ArcGraphPart::parents(), gum::InternalNode::parents(), gum::PartialOrderedEliminationSequenceStrategy::partialOrder(), gum::PartialOrderedEliminationSequenceStrategy::PartialOrderedEliminationSequenceStrategy(), gum::PartialOrderedTriangulation::PartialOrderedTriangulation(), gum::Directory::path(), gum::Timer::pause(), gum::FMDPSimulator::perform(), gum::TaxiSimulator::perform(), gum::TaxiSimulator::performFillUp__(), gum::TaxiSimulator::performGoEast__(), gum::TaxiSimulator::performGoNorth__(), gum::TaxiSimulator::performGoSouth__(), gum::TaxiSimulator::performGoWest__(), gum::TaxiSimulator::performPickUp__(), gum::TaxiSimulator::performPutDown__(), gum::ApproximationScheme::periodSize(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::PMMx_multi__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::PMMx_poly__(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::pop(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::pop(), gum::SplayTree< Element >::popBack(), gum::List< const gum::Potential< GUM_SCALAR > * >::popBack(), gum::SplayTree< Element >::popFront(), gum::List< const gum::Potential< GUM_SCALAR > * >::popFront(), gum::Formula::popOperator__(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::populate(), gum::MultiDimBijArray< GUM_SCALAR >::populate(), gum::MultiDimContainer< GUM_SCALAR >::populate(), gum::MultiDimDecorator< GUM_SCALAR >::populate(), gum::NodeGraphPart::populateNodes(), gum::MultiDimDecorator< GUM_SCALAR >::pos(), gum::MultiDimImplementation< std::string >::pos(), gum::Instantiation::pos(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::pos(), gum::SequenceIteratorSafe< NodeId >::pos(), gum::SplayBinaryNode< Element >::position(), gum::Estimator< GUM_SCALAR >::posterior(), gum::JointTargetedInference< GUM_SCALAR >::posterior(), gum::JointTargetedMNInference< GUM_SCALAR >::posterior(), gum::SamplingInference< GUM_SCALAR >::posterior_(), gum::Potential< GUM_SCALAR >::Potential(), gum::FormulaPart::precedence(), gum::GraphicalModelInference< GUM_SCALAR >::prepareInference(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::previous(), gum::print_output(), gum::print_stack(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::priority(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::priority(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::priorityByPos(), gum::PriorityQueue< gum::Edge, float >::PriorityQueue(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::PriorityQueueImplementation(), gum::ChiSquare::probaChi2(), gum::Chi2::probaChi2(), gum::ChiSquare::probaZValue__(), gum::Chi2::probaZValue__(), gum::O3prmBNReader< GUM_SCALAR >::proceed(), gum::Potential< GUM_SCALAR >::product(), gum::ProgressListener::ProgressListener(), gum::MultiDimFunctionGraphProjector< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::project(), gum::DefaultEliminationSequenceStrategy::providesFillIns(), gum::DefaultPartialOrderedEliminationSequenceStrategy::providesFillIns(), gum::List< const gum::Potential< GUM_SCALAR > * >::push_back(), gum::Formula::push_comma__(), gum::List< const gum::Potential< GUM_SCALAR > * >::push_front(), gum::Formula::push_function__(), gum::Formula::push_identifier__(), gum::Formula::push_leftParenthesis__(), gum::Formula::push_number__(), gum::Formula::push_operator__(), gum::Formula::push_output__(), gum::Formula::push_rightParenthesis__(), gum::Formula::push_stack__(), gum::Formula::push_unaryOperator__(), gum::Formula::push_variable__(), gum::SplayTree< Element >::pushBack(), gum::List< const gum::Potential< GUM_SCALAR > * >::pushBack(), gum::List< const gum::Potential< GUM_SCALAR > * >::pushBack__(), gum::SplayTree< Element >::pushFront(), gum::List< const gum::Potential< GUM_SCALAR > * >::pushFront(), gum::List< const gum::Potential< GUM_SCALAR > * >::pushFront__(), gum::Potential< GUM_SCALAR >::putFirst(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::q(), gum::Potential< GUM_SCALAR >::random(), gum::Potential< GUM_SCALAR >::randomCPT(), gum::Potential< GUM_SCALAR >::randomDistribution(), gum::randomProba(), gum::AbstractSimulator::randomState_(), gum::TaxiSimulator::randomState_(), gum::randomValue(), gum::RangeVariable::RangeVariable(), gum::BayesNetFactory< GUM_SCALAR >::rawConditionalTable(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::rbegin(), gum::List< const gum::Potential< GUM_SCALAR > * >::rbegin(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::rbeginSafe(), gum::List< const gum::Potential< GUM_SCALAR > * >::rbeginSafe(), gum::MultiDimSparse< GUM_SCALAR >::realSize(), gum::MultiDimArray< GUM_SCALAR >::realSize(), gum::MultiDimBijArray< GUM_SCALAR >::realSize(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::realSize(), gum::MultiDimBucket< GUM_SCALAR >::realSize(), gum::IMDDI< AttributeSelection, isScalar >::rebuildFunctionGraph__(), gum::StructuredPlaner< double >::recurArgMaxCopy__(), gum::StructuredPlaner< double >::recurExtractOptPol__(), gum::MultiDimArray< GUM_SCALAR >::reduce(), gum::MultiDimDecorator< GUM_SCALAR >::reduce(), gum::MultiDimContainer< GUM_SCALAR >::reduce(), gum::MultiDimFunctionGraphROManager< GUM_SCALAR, TerminalNodePolicy >::reduce(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::reduce_(), gum::Formula::reduceOperatorOrFunction__(), gum::RefPtr< Val >::refCount(), gum::RefPtr< Val >::refCountPtr__(), gum::RefPtr< Val >::RefPtr(), gum::MultiDimWithOffset< GUM_SCALAR >::registerSlave(), gum::MultiDimDecorator< GUM_SCALAR >::registerSlave(), gum::MultiDimImplementation< std::string >::registerSlave(), gum::MultiDimBucket< GUM_SCALAR >::registerSlave(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::Regress(), gum::TreeOperatorStrategy< GUM_SCALAR >::regress(), gum::MDDOperatorStrategy< GUM_SCALAR >::regress(), gum::FixedAllocator::Chunk__::release__(), gum::BayesBall::relevantPotentials(), gum::dSeparation::relevantPotentials(), gum::ApproximationScheme::remainingBurnIn(), gum::LeafAggregator::removeContext__(), gum::ListConstIteratorSafe< Val >::removeFromSafeList__(), gum::removeInfo(), gum::LeafAggregator::removeInitialPair__(), gum::LeafAggregator::removeLeaf(), gum::IMDDI< AttributeSelection, isScalar >::removeLeaf__(), gum::IMDDI< AttributeSelection, isScalar >::removeNode_(), gum::ITI< AttributeSelection, isScalar >::removeNode_(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::removeNode_(), gum::FusionContext< true >::removePair(), gum::InternalNode::removeParent(), gum::VariableSelector::removeVar__(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::rend(), gum::Instantiation::rend(), gum::List< const gum::Potential< GUM_SCALAR > * >::rend(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::rendSafe(), gum::List< const gum::Potential< GUM_SCALAR > * >::rendSafe(), gum::Instantiation::reorder(), gum::Instantiation::reorder__(), gum::Potential< GUM_SCALAR >::reorganize(), gum::MultiDimInterface::replace(), gum::MultiDimSparse< GUM_SCALAR >::replace_(), gum::MultiDimICIModel< GUM_SCALAR >::replace_(), gum::MultiDimBijArray< GUM_SCALAR >::replace_(), gum::MultiDimDecorator< GUM_SCALAR >::replace_(), gum::MultiDimImplementation< std::string >::replace_(), gum::MultiDimArray< GUM_SCALAR >::replace_(), gum::MultiDimBucket< GUM_SCALAR >::replace_(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::replace_(), gum::Instantiation::replace_(), gum::BayesBall::requisiteNodes(), gum::dSeparation::requisiteNodes(), gum::StatesCounter::reset(), gum::StatesChecker::reset(), gum::Timer::reset(), gum::FMDPFactory< GUM_SCALAR >::resetParts__(), gum::BayesNetFactory< GUM_SCALAR >::resetParts__(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::resize(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::resize(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::resize(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::resize(), gum::Set< gum::Potential< GUM_SCALAR > * >::resize(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::resizePolicy(), gum::Set< gum::Potential< GUM_SCALAR > * >::resizePolicy(), gum::DAGCycleDetector::restrictWeightedSet__(), gum::Formula::result(), gum::Timer::resume(), gum::DAGCycleDetector::reverseArc(), gum::BayesNet< double >::reverseArc(), gum::TaxiSimulator::reward(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::root(), gum::BinaryJoinTreeConverterDefault::roots(), gum::LinearApproximationPolicy< GUM_SCALAR >::safeFromExact(), gum::SamplingInference< GUM_SCALAR >::samplingBN(), gum::Potential< GUM_SCALAR >::scale(), gum::Chi2TestPolicy< GUM_SCALAR >::score(), gum::GTestPolicy< GUM_SCALAR >::score(), gum::LeastSquareTestPolicy< GUM_SCALAR >::score(), gum::SDYNA::SDYNA(), gum::LinkedList< gum::Parent >::searchAndRemoveLink(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::second(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::second(), gum::BijectionIterator< int, int >::second(), gum::Chi2TestPolicy< GUM_SCALAR >::secondaryscore(), gum::GTestPolicy< GUM_SCALAR >::secondaryscore(), gum::LeastSquareTestPolicy< GUM_SCALAR >::secondaryscore(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::secondWithDefault(), gum::VariableSelector::select(), gum::Sequence< NodeId >::Sequence(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::SequenceImplementation(), gum::SequenceIteratorSafe< NodeId >::SequenceIteratorSafe(), gum::MultiDimReadOnly< GUM_SCALAR >::set(), gum::MultiDimSparse< GUM_SCALAR >::set(), gum::MultiDimBijArray< GUM_SCALAR >::set(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::set(), gum::MultiDimContainer< GUM_SCALAR >::set(), gum::MultiDimDecorator< GUM_SCALAR >::set(), gum::Set< gum::Potential< GUM_SCALAR > * >::Set(), gum::SequenceIteratorSafe< NodeId >::setAtEnd__(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::setAtPos(), gum::SequenceIteratorSafe< NodeId >::setAtRend__(), gum::BayesNetInference< GUM_SCALAR >::setBayesNetDuringConstruction__(), gum::BayesNetInference< GUM_SCALAR >::setBN(), gum::MultiDimBucket< GUM_SCALAR >::setBufferSize(), gum::GibbsBNdistance< GUM_SCALAR >::setBurnIn(), gum::MultiDimArray< GUM_SCALAR >::setByOffset(), gum::MultiDimWithOffset< GUM_SCALAR >::setChangeNotification(), gum::MultiDimDecorator< GUM_SCALAR >::setChangeNotification(), gum::MultiDimBucket< GUM_SCALAR >::setChangeNotification(), gum::Chi2::setConditioningNodes(), gum::Chi2::setConfidenceProba(), gum::BayesNetFactory< GUM_SCALAR >::setCPTAndParents__(), gum::BarrenNodesFinder::setDAG(), gum::DAGCycleDetector::setDAG(), gum::MultiDimWithOffset< GUM_SCALAR >::setDecNotification(), gum::MultiDimDecorator< GUM_SCALAR >::setDecNotification(), gum::MultiDimBucket< GUM_SCALAR >::setDecNotification(), gum::O4DGContext::setDG1Node(), gum::O4DGContext::setDG2Node(), gum::setDynamicThreadsNumber(), gum::ApproximationScheme::setEpsilon(), gum::LinearApproximationPolicy< GUM_SCALAR >::setEpsilon(), gum::SamplingInference< GUM_SCALAR >::setEstimatorFromBN_(), gum::SamplingInference< GUM_SCALAR >::setEstimatorFromLBP_(), gum::BarrenNodesFinder::setEvidence(), gum::Instantiation::setFirst(), gum::Instantiation::setFirstIn(), gum::MultiDimWithOffset< GUM_SCALAR >::setFirstNotification(), gum::MultiDimDecorator< GUM_SCALAR >::setFirstNotification(), gum::MultiDimBucket< GUM_SCALAR >::setFirstNotification(), gum::Instantiation::setFirstNotVar(), gum::Instantiation::setFirstOut(), gum::Instantiation::setFirstVar(), gum::Estimator< GUM_SCALAR >::setFromBN(), gum::Estimator< GUM_SCALAR >::setFromLBP(), gum::StaticTriangulation::setGraph(), gum::EliminationSequenceStrategy::setGraph(), gum::PartialOrderedEliminationSequenceStrategy::setGraph(), gum::OrderedEliminationSequenceStrategy::setGraph(), gum::OrderedTriangulation::setGraph(), gum::PartialOrderedTriangulation::setGraph(), gum::DefaultEliminationSequenceStrategy::setGraph(), gum::DefaultPartialOrderedEliminationSequenceStrategy::setGraph(), gum::LinearApproximationPolicy< GUM_SCALAR >::setHighLimit(), gum::MultiDimWithOffset< GUM_SCALAR >::setIncNotification(), gum::MultiDimDecorator< GUM_SCALAR >::setIncNotification(), gum::MultiDimBucket< GUM_SCALAR >::setIncNotification(), gum::AbstractSimulator::setInitialStateRandomly(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::setIteration(), gum::SetIterator< Key >::SetIterator(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::SetIteratorSafe(), gum::Instantiation::setLast(), gum::Instantiation::setLastIn(), gum::MultiDimWithOffset< GUM_SCALAR >::setLastNotification(), gum::MultiDimDecorator< GUM_SCALAR >::setLastNotification(), gum::MultiDimBucket< GUM_SCALAR >::setLastNotification(), gum::Instantiation::setLastNotVar(), gum::Instantiation::setLastOut(), gum::Instantiation::setLastVar(), gum::LinearApproximationPolicy< GUM_SCALAR >::setLimits(), gum::LinearApproximationPolicy< GUM_SCALAR >::setLowLimit(), gum::MarkovNetInference< GUM_SCALAR >::setMarkovNetDuringConstruction__(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::setMaxArcs(), gum::AggregatorDecomposition< GUM_SCALAR >::setMaximumArity(), gum::ApproximationScheme::setMaxIter(), gum::MaxInducedWidthMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::setMaxlog10InducedWidth(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::setMaxModality(), gum::MaxParentsMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::setMaxParents(), gum::ApproximationScheme::setMaxTime(), gum::ApproximationScheme::setMinEpsilonRate(), gum::MarkovNetInference< GUM_SCALAR >::setMN(), gum::GraphicalModelInference< GUM_SCALAR >::setModel_(), gum::GraphicalModelInference< GUM_SCALAR >::setModelDuringConstruction_(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::setNbrNodes(), gum::setNestedParallelism(), gum::Link< gum::Parent >::setNextLink(), gum::IndexedTree< Key, Data >::setNode(), gum::InternalNode::setNode(), gum::InternalNode::setNodeVar(), gum::InternalNode::setNodeVar__(), gum::MultiDimImplementation< std::string >::setNotCommitedChange__(), gum::setNumberOfThreads(), gum::FMDPFactory< GUM_SCALAR >::setOperationModeOn(), gum::OrderedEliminationSequenceStrategy::setOrder(), gum::OrderedTriangulation::setOrder(), gum::GraphicalModelInference< GUM_SCALAR >::setOutdatedPotentialsState_(), gum::GraphicalModelInference< GUM_SCALAR >::setOutdatedStructureState_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::setP(), gum::BayesNetFactory< GUM_SCALAR >::setParentModality(), gum::PartialOrderedEliminationSequenceStrategy::setPartialOrder(), gum::PartialOrderedTriangulation::setPartialOrder(), gum::ApproximationScheme::setPeriodSize(), gum::NodeGraphPartIterator::setPos_(), gum::SequenceIteratorSafe< NodeId >::setPos__(), gum::GammaLog2::setPrecision(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::setPriority(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::setPriority(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::setPriorityByPos(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::setPriorityByPos(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::setQ(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::setResizePolicy(), gum::Set< gum::Potential< GUM_SCALAR > * >::setResizePolicy(), gum::FMDPFactory< GUM_SCALAR >::setRoot(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::setRootNode(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::setSon(), gum::InternalNode::setSon(), gum::GraphicalModelInference< GUM_SCALAR >::setState_(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::setTableName(), gum::BarrenNodesFinder::setTargets(), gum::ListConstIterator< Val >::setToEnd(), gum::ListConstIteratorSafe< Val >::setToEnd(), gum::DefaultJunctionTreeStrategy::setTriangulation(), gum::Instantiation::setVals(), gum::Instantiation::setValsFrom(), gum::BayesNetFactory< GUM_SCALAR >::setVariable(), gum::BayesNetFactory< GUM_SCALAR >::setVariableCPT(), gum::BayesNetFactory< GUM_SCALAR >::setVariableCPTImplementation(), gum::BayesNetFactory< GUM_SCALAR >::setVariableValues(), gum::BayesNetFactory< GUM_SCALAR >::setVariableValuesUnchecked(), gum::ApproximationScheme::setVerbosity(), gum::SimpleBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::SimpleBayesNetGenerator(), gum::SimpleCPTDisturber< GUM_SCALAR >::SimpleCPTDisturber(), gum::SimpleCPTGenerator< GUM_SCALAR >::SimpleCPTGenerator(), gum::SimpleUTGenerator::SimpleUTGenerator(), gum::DAGmodel::size(), gum::UGmodel::size(), gum::MarkovBlanket::size(), gum::EssentialGraph::size(), gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::size(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::size(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::size(), gum::NodeGraphPart::size(), gum::SplayTree< Element >::size(), gum::Set< gum::Potential< GUM_SCALAR > * >::size(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::size(), gum::List< const gum::Potential< GUM_SCALAR > * >::size(), gum::MarkovBlanket::sizeArcs(), gum::DAGmodel::sizeArcs(), gum::EssentialGraph::sizeArcs(), gum::ArcGraphPart::sizeArcs(), gum::UGmodel::sizeEdges(), gum::EssentialGraph::sizeEdges(), gum::EdgeGraphPart::sizeEdges(), gum::NodeGraphPart::sizeHoles__(), gum::MarkovBlanket::sizeNodes(), gum::EssentialGraph::sizeNodes(), gum::NodeGraphPart::sizeNodes(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::sizeVarRetroDomain(), gum::EssentialGraph::skeleton(), gum::MultiDimImplementation< std::string >::slaves_(), gum::IMarkovNet< GUM_SCALAR >::smallestFactorFromNode(), gum::SmallObjectAllocator::SmallObjectAllocator(), gum::GraphicalModelInference< GUM_SCALAR >::softEvidenceNodes(), gum::InternalNode::son(), gum::SpanningForestPrim::spanningForest(), gum::SpanningForestPrim::SpanningForestPrim(), gum::SplayBinaryNode< Element >::splay(), gum::SplayBinaryNode< Element >::SplayBinaryNode(), gum::SplayTree< Element >::SplayTree(), gum::SplayTree< Element >::split(), gum::SplayTree< Element >::split_by_val(), gum::Potential< GUM_SCALAR >::sq(), gum::SSNewMNmultiPotential(), gum::SSNewMNprojPotential(), gum::SSNewmultiPotential(), gum::SSNewprojPotential(), gum::FMDPFactory< GUM_SCALAR >::startActionDeclaration(), gum::FMDPFactory< GUM_SCALAR >::startCostDeclaration(), gum::FMDPFactory< GUM_SCALAR >::startDiscountDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::startFactorizedEntry(), gum::BayesNetFactory< GUM_SCALAR >::startFactorizedProbabilityDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::startNetworkDeclaration(), gum::ApproximationScheme::startOfPeriod(), gum::BayesNetFactory< GUM_SCALAR >::startParentsDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::startRawProbabilityDeclaration(), gum::FMDPFactory< GUM_SCALAR >::startRewardDeclaration(), gum::FMDPFactory< GUM_SCALAR >::startTransitionDeclaration(), gum::FMDPFactory< GUM_SCALAR >::startVariableDeclaration(), gum::BayesNetFactory< GUM_SCALAR >::startVariableDeclaration(), gum::FMDPFactory< GUM_SCALAR >::state(), gum::BayesNetFactory< GUM_SCALAR >::state(), gum::GraphicalModelInference< GUM_SCALAR >::state(), gum::ApproximationScheme::stateApproximationScheme(), gum::E_GreedyDecider::stateOptimalPolicy(), gum::StatesChecker::StatesChecker(), gum::StatesCounter::StatesCounter(), gum::StaticTriangulation::StaticTriangulation(), gum::Timer::step(), gum::ApproximationScheme::stopApproximationScheme(), gum::ApproximationScheme::stopScheme_(), gum::FormulaPart::str(), gum::EssentialGraph::strongly_protected__(), gum::StructuredPlaner< double >::StructuredPlaner(), gum::TreeOperatorStrategy< GUM_SCALAR >::subtract(), gum::MDDOperatorStrategy< GUM_SCALAR >::subtract(), gum::Potential< GUM_SCALAR >::sum(), gum::JointTargetedMNInference< GUM_SCALAR >::superForJointComputable_(), gum::superiorPow(), gum::swap(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::swap(), gum::List< const gum::Potential< GUM_SCALAR > * >::swap(), gum::Instantiation::swap__(), gum::MultiDimDecorator< GUM_SCALAR >::swapContent_(), gum::Instantiation::synchronizeWithMaster(), gum::ErrorsContainer::syntheticResults(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::tableName(), gum::DAGCycleDetector::Change::tail(), gum::SDYNA::takeAction(), gum::TaxiSimulator::TaxiSimulator(), gum::Timer::Timer(), gum::to_string(), gum::BayesNetFragment< GUM_SCALAR >::toBN(), gum::MarkovBlanket::toDot(), gum::EssentialGraph::toDot(), gum::BayesNetFragment< GUM_SCALAR >::toDot(), gum::DiGraph::toDot(), gum::IBayesNet< double >::toDot(), gum::IMarkovNet< GUM_SCALAR >::toDot(), gum::MixedGraph::toDot(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::toDot(), gum::IMarkovNet< GUM_SCALAR >::toDotAsFactorGraph(), gum::toLower(), gum::MultiDimWithOffset< GUM_SCALAR >::toOffset(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::top(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::top(), gum::DiGraph::topologicalOrder(), gum::DAGmodel::topologicalOrder(), gum::DiGraph::topologicalOrder__(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::topPriority(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::topPriority(), gum::ComposedLeaf::toString(), gum::MultiDimICIModel< GUM_SCALAR >::toString(), gum::MultiDimWithOffset< GUM_SCALAR >::toString(), gum::MultiDimLogit< GUM_SCALAR >::toString(), gum::MultiDimNoisyORNet< GUM_SCALAR >::toString(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::toString(), gum::MultiDimNoisyAND< GUM_SCALAR >::toString(), gum::LeafPair::toString(), gum::Observation::toString(), gum::LeafAggregator::toString(), gum::DiGraph::toString(), gum::EdgeGraphPart::toString(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::toString(), gum::NodeDatabase< AttributeSelection, isScalar >::toString(), gum::IBayesNet< double >::toString(), gum::MultiDimDecorator< GUM_SCALAR >::toString(), gum::IMarkovNet< GUM_SCALAR >::toString(), gum::MixedGraph::toString(), gum::FusionContext< true >::toString(), gum::ArcGraphPart::toString(), gum::MultiDimBucket< GUM_SCALAR >::toString(), gum::MultiDimContainer< GUM_SCALAR >::toString(), gum::SDYNA::toString(), gum::NodeGraphPart::toString(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::toString(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::toString(), gum::Set< gum::Potential< GUM_SCALAR > * >::toString(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::toString(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::toString(), gum::Instantiation::toString(), gum::List< const gum::Potential< GUM_SCALAR > * >::toString(), gum::StructuredPlaner< double >::transferActionIds__(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::transformPoly__(), gum::Potential< GUM_SCALAR >::translate(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::transpose_(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::TreeOperator(), gum::TreeOperatorStrategy< GUM_SCALAR >::TreeOperatorStrategy(), gum::StaticTriangulation::triangulate__(), gum::StaticTriangulation::triangulatedGraph(), gum::Triangulation::Triangulation(), gum::DAGCycleDetector::Change::type(), gum::UGmodel::UGmodel(), gum::UnconstrainedEliminationSequenceStrategy::UnconstrainedEliminationSequenceStrategy(), gum::UnconstrainedTriangulation::UnconstrainedTriangulation(), gum::UndiGraphListener::UndiGraphListener(), gum::EdgeGraphPart::undirectedPath(), gum::BayesNetFragment< GUM_SCALAR >::uninstallArc_(), gum::BayesNetFragment< GUM_SCALAR >::uninstallCPT(), gum::BayesNetFragment< GUM_SCALAR >::uninstallCPT_(), gum::BayesNetFragment< GUM_SCALAR >::uninstallNode(), gum::MultiDimWithOffset< GUM_SCALAR >::unregisterSlave(), gum::MultiDimDecorator< GUM_SCALAR >::unregisterSlave(), gum::MultiDimImplementation< std::string >::unregisterSlave(), gum::MultiDimBucket< GUM_SCALAR >::unregisterSlave(), gum::BayesNet< double >::unsafeChangePotential_(), gum::MultiDimArray< GUM_SCALAR >::unsafeGet(), gum::MultiDimArray< GUM_SCALAR >::unsafeSet(), gum::Instantiation::unsetEnd(), gum::Instantiation::unsetOverflow(), gum::ImportanceSampling< GUM_SCALAR >::unsharpenBN_(), gum::ArcGraphPart::unvirtualizedEraseChildren(), gum::EdgeGraphPart::unvirtualizedEraseNeighbours(), gum::ArcGraphPart::unvirtualizedEraseParents(), gum::ArcGraphPart::unvirtualizedEraseSetOfArcs_(), gum::Estimator< GUM_SCALAR >::update(), gum::LeafAggregator::update(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::update_end__(), gum::FusionContext< true >::updateAllAssociatedLeaves__(), gum::ApproximationScheme::updateApproximationScheme(), gum::FusionContext< true >::updateAssociatedLeaf__(), gum::NodeGraphPart::updateEndIteratorSafe__(), gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::updateFMDP(), gum::IMDDI< AttributeSelection, isScalar >::updateFunctionGraph(), gum::ITI< AttributeSelection, isScalar >::updateFunctionGraph(), gum::IMDDI< AttributeSelection, isScalar >::updateGraph(), gum::ITI< AttributeSelection, isScalar >::updateGraph(), gum::LeafAggregator::updateInitialPair__(), gum::LeafAggregator::updateLeaf(), gum::LeafPair::updateLikelyhood(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::updateNode_(), gum::IMDDI< AttributeSelection, isScalar >::updateNodeSet__(), gum::IMDDI< AttributeSelection, isScalar >::updateNodeWithObservation_(), gum::ITI< AttributeSelection, isScalar >::updateNodeWithObservation_(), gum::FusionContext< true >::updatePair(), gum::GibbsOperator< GUM_SCALAR >::updateSamplingNodes__(), gum::VariableSelector::updateScore(), gum::IMDDI< AttributeSelection, isScalar >::updateScore__(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::updateVar(), gum::UTGenerator::UTGenerator(), gum::Instantiation::val(), gum::Instantiation::valFromPtr(), gum::NodeGraphPartIterator::validate_(), gum::AdaptiveRMaxPlaner::valueIteration_(), gum::StructuredPlaner< double >::valueIteration_(), gum::FMDPFactory< GUM_SCALAR >::variable(), gum::MultiDimDecorator< GUM_SCALAR >::variable(), gum::BayesNetFactory< GUM_SCALAR >::variable(), gum::BayesNetFragment< GUM_SCALAR >::variable(), gum::MultiDimImplementation< std::string >::variable(), gum::BayesNet< double >::variable(), gum::Instantiation::variable(), gum::FMDPFactory< GUM_SCALAR >::variableDescription(), gum::BayesNetFactory< GUM_SCALAR >::variableDescription(), gum::BayesNetFragment< GUM_SCALAR >::variableFromName(), gum::BayesNet< double >::variableFromName(), gum::BayesNetFactory< GUM_SCALAR >::variableId(), gum::FMDPFactory< GUM_SCALAR >::variableName(), gum::BayesNetFactory< GUM_SCALAR >::variableName(), gum::BayesNetFragment< GUM_SCALAR >::variableNodeMap(), gum::BayesNet< double >::variableNodeMap(), gum::Formula::variables(), gum::VariableSelector::VariableSelector(), gum::MultiDimDecorator< GUM_SCALAR >::variablesSequence(), gum::MultiDimImplementation< std::string >::variablesSequence(), gum::Instantiation::variablesSequence(), gum::BayesNetFactory< GUM_SCALAR >::variableType(), gum::Estimator< GUM_SCALAR >::variance(), gum::BayesNetFactory< GUM_SCALAR >::varInBN(), gum::O4DGContext::varModality(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::varNodeListe(), gum::VENewmultiPotential(), gum::VENewprojPotential(), gum::ApproximationScheme::verbosity(), gum::JointTargetedInference< GUM_SCALAR >::VI(), gum::JointTargetedMNInference< GUM_SCALAR >::VI(), gum::AdaptiveRMaxPlaner::visitLearner__(), gum::ErrorsContainer::Warning(), gum::BayesNetFragment< GUM_SCALAR >::whenArcDeleted(), gum::BayesNetFragment< GUM_SCALAR >::whenNodeDeleted(), gum::NodeGraphPartIteratorSafe::whenNodeDeleted(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::xPloreDT1__(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::xPloreDT2__(), gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::xPloreVFunc__(), gum::SplayBinaryNode< Element >::zag(), gum::SplayBinaryNode< Element >::zig(), gum::AbstractSimulator::~AbstractSimulator(), gum::AdaptiveRMaxPlaner::~AdaptiveRMaxPlaner(), gum::AggregatorDecomposition< GUM_SCALAR >::~AggregatorDecomposition(), gum::ApproximationScheme::~ApproximationScheme(), gum::ApproximationSchemeListener::~ApproximationSchemeListener(), gum::DAGCycleDetector::ArcAdd::~ArcAdd(), gum::DAGCycleDetector::ArcDel::~ArcDel(), gum::ArcGraphPart::~ArcGraphPart(), gum::DAGCycleDetector::ArcReverse::~ArcReverse(), gum::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::~ArgMaxSet(), gum::BarrenNodesFinder::~BarrenNodesFinder(), gum::BayesBall::~BayesBall(), gum::BayesNet< double >::~BayesNet(), gum::BayesNetFactory< GUM_SCALAR >::~BayesNetFactory(), gum::BayesNetFragment< GUM_SCALAR >::~BayesNetFragment(), gum::BayesNetInference< GUM_SCALAR >::~BayesNetInference(), gum::Bijection< NodeId, std::size_t >::~Bijection(), gum::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::~BijectionImplementation(), gum::BijectionIterator< int, int >::~BijectionIterator(), gum::BijectionIteratorSafe< NodeId, GUM_SCALAR >::~BijectionIteratorSafe(), gum::BinaryJoinTreeConverter::~BinaryJoinTreeConverter(), gum::BinaryJoinTreeConverterDefault::~BinaryJoinTreeConverterDefault(), gum::DAGCycleDetector::Change::~Change(), gum::Chi2::~Chi2(), gum::ContingencyTable< Idx, GUM_SCALAR >::~ContingencyTable(), gum::DAG::~DAG(), gum::DAGCycleDetector::~DAGCycleDetector(), gum::DAGmodel::~DAGmodel(), gum::DefaultEliminationSequenceStrategy::~DefaultEliminationSequenceStrategy(), gum::DefaultJunctionTreeStrategy::~DefaultJunctionTreeStrategy(), gum::DefaultPartialOrderedEliminationSequenceStrategy::~DefaultPartialOrderedEliminationSequenceStrategy(), gum::DiGraph::~DiGraph(), gum::DiGraphListener::~DiGraphListener(), gum::Directory::~Directory(), gum::Dirichlet::~Dirichlet(), gum::dSeparation::~dSeparation(), gum::E_GreedyDecider::~E_GreedyDecider(), gum::EdgeGraphPart::~EdgeGraphPart(), gum::EliminationSequenceStrategy::~EliminationSequenceStrategy(), gum::Estimator< GUM_SCALAR >::~Estimator(), gum::EvidenceInference< GUM_SCALAR >::~EvidenceInference(), gum::EvidenceMNInference< GUM_SCALAR >::~EvidenceMNInference(), gum::ExactBNdistance< GUM_SCALAR >::~ExactBNdistance(), gum::FixedAllocator::~FixedAllocator(), gum::FMDPFactory< GUM_SCALAR >::~FMDPFactory(), gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::~FMDPLearner(), gum::FMDPSimulator::~FMDPSimulator(), gum::Formula::~Formula(), gum::FormulaPart::~FormulaPart(), gum::FusionContext< true >::~FusionContext(), gum::GammaLog2::~GammaLog2(), gum::GibbsBNdistance< GUM_SCALAR >::~GibbsBNdistance(), gum::GibbsOperator< GUM_SCALAR >::~GibbsOperator(), gum::GibbsSampling< GUM_SCALAR >::~GibbsSampling(), gum::GraphicalModel::~GraphicalModel(), gum::GraphicalModelInference< GUM_SCALAR >::~GraphicalModelInference(), gum::IApproximationSchemeConfiguration::~IApproximationSchemeConfiguration(), gum::IBayesNet< double >::~IBayesNet(), gum::IBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::~IBayesNetGenerator(), gum::IMarkovNet< GUM_SCALAR >::~IMarkovNet(), gum::IMDDI< AttributeSelection, isScalar >::~IMDDI(), gum::ImportanceSampling< GUM_SCALAR >::~ImportanceSampling(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::~IncrementalGraphLearner(), gum::IndexedTree< Key, Data >::~IndexedTree(), gum::InfluenceDiagramGenerator< GUM_SCALAR >::~InfluenceDiagramGenerator(), gum::Instantiation::~Instantiation(), gum::InternalNode::~InternalNode(), gum::JointTargetedInference< GUM_SCALAR >::~JointTargetedInference(), gum::JointTargetedMNInference< GUM_SCALAR >::~JointTargetedMNInference(), gum::JunctionTreeStrategy::~JunctionTreeStrategy(), gum::LeafAggregator::~LeafAggregator(), gum::LeastSquareTestPolicy< GUM_SCALAR >::~LeastSquareTestPolicy(), gum::Link< gum::Parent >::~Link(), gum::LinkedList< gum::Parent >::~LinkedList(), gum::List< const gum::Potential< GUM_SCALAR > * >::~List(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::~ListBucket(), gum::ListConstIterator< Val >::~ListConstIterator(), gum::ListConstIteratorSafe< Val >::~ListConstIteratorSafe(), gum::Listener::~Listener(), gum::ListIterator< Val >::~ListIterator(), gum::ListIteratorSafe< Val >::~ListIteratorSafe(), gum::LoopySamplingInference< GUM_SCALAR, APPROX >::~LoopySamplingInference(), gum::MarkovNetInference< GUM_SCALAR >::~MarkovNetInference(), gum::MaxInducedWidthMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::~MaxInducedWidthMCBayesNetGenerator(), gum::MaxParentsMCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::~MaxParentsMCBayesNetGenerator(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::~MCBayesNetGenerator(), gum::MDDOperatorStrategy< GUM_SCALAR >::~MDDOperatorStrategy(), gum::MixedGraph::~MixedGraph(), gum::MixedGraphListener::~MixedGraphListener(), gum::MonteCarloSampling< GUM_SCALAR >::~MonteCarloSampling(), gum::MultiDimAdressable::~MultiDimAdressable(), gum::MultiDimArray< GUM_SCALAR >::~MultiDimArray(), gum::MultiDimBijArray< GUM_SCALAR >::~MultiDimBijArray(), gum::MultiDimBucket< GUM_SCALAR >::~MultiDimBucket(), gum::MultiDimContainer< GUM_SCALAR >::~MultiDimContainer(), gum::MultiDimDecorator< GUM_SCALAR >::~MultiDimDecorator(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::~MultiDimFunctionGraph(), gum::MultiDimFunctionGraphGenerator::~MultiDimFunctionGraphGenerator(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::~MultiDimFunctionGraphManager(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::~MultiDimFunctionGraphOperator(), gum::MultiDimFunctionGraphProjector< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::~MultiDimFunctionGraphProjector(), gum::MultiDimFunctionGraphROManager< GUM_SCALAR, TerminalNodePolicy >::~MultiDimFunctionGraphROManager(), gum::MultiDimFunctionGraphTreeManager< GUM_SCALAR, TerminalNodePolicy >::~MultiDimFunctionGraphTreeManager(), gum::MultiDimICIModel< GUM_SCALAR >::~MultiDimICIModel(), gum::MultiDimImplementation< std::string >::~MultiDimImplementation(), gum::MultiDimLogit< GUM_SCALAR >::~MultiDimLogit(), gum::MultiDimNoisyAND< GUM_SCALAR >::~MultiDimNoisyAND(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::~MultiDimNoisyORCompound(), gum::MultiDimNoisyORNet< GUM_SCALAR >::~MultiDimNoisyORNet(), gum::MultiDimReadOnly< GUM_SCALAR >::~MultiDimReadOnly(), gum::MultiDimSparse< GUM_SCALAR >::~MultiDimSparse(), gum::MultiDimWithOffset< GUM_SCALAR >::~MultiDimWithOffset(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::~MultiPriorityQueue(), gum::NodeDatabase< AttributeSelection, isScalar >::~NodeDatabase(), gum::NodeGraphPart::~NodeGraphPart(), gum::NodeGraphPartIterator::~NodeGraphPartIterator(), gum::NodeGraphPartIteratorSafe::~NodeGraphPartIteratorSafe(), gum::O3prmBNReader< GUM_SCALAR >::~O3prmBNReader(), gum::O4DGContext::~O4DGContext(), gum::OrderedEliminationSequenceStrategy::~OrderedEliminationSequenceStrategy(), gum::OrderedTriangulation::~OrderedTriangulation(), gum::PartialOrderedEliminationSequenceStrategy::~PartialOrderedEliminationSequenceStrategy(), gum::PartialOrderedTriangulation::~PartialOrderedTriangulation(), gum::Potential< GUM_SCALAR >::~Potential(), gum::PriorityQueue< gum::Edge, float >::~PriorityQueue(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::~PriorityQueueImplementation(), gum::ProgressListener::~ProgressListener(), gum::RangeVariable::~RangeVariable(), gum::RefPtr< Val >::~RefPtr(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::~Regress(), gum::SamplingInference< GUM_SCALAR >::~SamplingInference(), gum::SDYNA::~SDYNA(), gum::Sequence< NodeId >::~Sequence(), gum::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::~SequenceImplementation(), gum::SequenceIteratorSafe< NodeId >::~SequenceIteratorSafe(), gum::SetIterator< Key >::~SetIterator(), gum::SetIteratorSafe< const gum::DiscreteVariable * >::~SetIteratorSafe(), gum::SimpleBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::~SimpleBayesNetGenerator(), gum::SimpleCPTDisturber< GUM_SCALAR >::~SimpleCPTDisturber(), gum::SimpleCPTGenerator< GUM_SCALAR >::~SimpleCPTGenerator(), gum::SimpleUTGenerator::~SimpleUTGenerator(), gum::SmallObjectAllocator::~SmallObjectAllocator(), gum::SpanningForestPrim::~SpanningForestPrim(), gum::SplayBinaryNode< Element >::~SplayBinaryNode(), gum::SplayTree< Element >::~SplayTree(), gum::StatesChecker::~StatesChecker(), gum::StatesCounter::~StatesCounter(), gum::StaticTriangulation::~StaticTriangulation(), gum::StructuredPlaner< double >::~StructuredPlaner(), gum::TaxiSimulator::~TaxiSimulator(), gum::Timer::~Timer(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::~TreeOperator(), gum::TreeOperatorStrategy< GUM_SCALAR >::~TreeOperatorStrategy(), gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::~TreeRegress(), gum::Triangulation::~Triangulation(), gum::UGmodel::~UGmodel(), gum::UnconstrainedEliminationSequenceStrategy::~UnconstrainedEliminationSequenceStrategy(), gum::UnconstrainedTriangulation::~UnconstrainedTriangulation(), gum::UndiGraphListener::~UndiGraphListener(), gum::UTGenerator::~UTGenerator(), gum::VariableSelector::~VariableSelector(), and gum::WeightedSampling< GUM_SCALAR >::~WeightedSampling().

669  {
670  insert(std::move(Key(std::forward< Args >(args)...)));
671  }
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:632

◆ empty()

template<typename Key , typename Alloc >
INLINE bool gum::Set< Key, Alloc >::empty ( ) const
noexcept

Indicates whether the set is the empty set.

Returns
Returns true if the set is empty.

Definition at line 726 of file set_tpl.h.

726  {
727  return inside__.empty();
728  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
bool empty() const noexcept
Indicates whether the hash table is empty.

◆ end()

template<typename Key , typename Alloc >
INLINE const Set< Key, Alloc >::iterator & gum::Set< Key, Alloc >::end ( ) const
noexcept

The usual unsafe end iterator to parse the set.

Returns
Returns the usual unsafe end iterator to parse the set.

Definition at line 530 of file set_tpl.h.

530  {
531  return *(reinterpret_cast< const SetIterator< Key >* >(
532  SetIteratorStaticEnd::SetIterEnd__));
533  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:771

◆ end4Statics()

template<typename Key , typename Alloc >
INLINE const SetIterator< Key > & gum::Set< Key, Alloc >::end4Statics ( )
static

Returns the end iterator for other classes' statics (read the detailed description of this method).

To reduce the Sets memory consumption (which are heavily used in aGrUM) while allowing fast for(iter=begin(); iter!=end();++iter) loops, end iterators are created just once as a static member of a non-template Set. While this scheme is efficient and it works quite effectively when manipulating sets, it has a drawback: other classes with static members using the Set's end() iterator may fail to work due to the well known "static initialization order fiasco" (see Marshall Cline's C++ FAQ for more details about this C++ feature). OK, so what is the problem? Consider a class, say X, containing a Set that stores all its elements in a convenient way. To reduce memory consumption, X::end iterator is a static member that is initialized with a Set::end iterator. If the compiler decides to initialize X::end before initializing Set::end, then X::end will be in an incoherent state. Unfortunately, we cannot know for sure in which order static members will be initialized (the order is a compiler's decision). Hence, we shall enfore the fact that Set::end is initialized before X::end. Using method Set::end4Statics will ensure this fact: it uses the C++ "construct on first use" idiom (see the C++ FAQ) that ensures that the order fiasco is avoided. More precisely, end4Statics uses a global variable that is the very end iterator used by all Sets. Now, this induces a small overhead. So, we also provide a Set::end() method that returns the Set::end iterator without this small overhead, but assuming that function end4Statics has already been called once (which is always the case) when a Set has been created.

So, to summarize: when initializing static members, use end4Statics() rather than end(). In all the other cases, use simply the usual method end().

Returns
Returns the end iterator for other classes' statics (read the detailed description of this method).

Definition at line 304 of file set_tpl.h.

304  {
305  return *(reinterpret_cast< const SetIterator< Key >* >(
306  SetIteratorStaticEnd::end4Statics()));
307  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:771

◆ endSafe()

template<typename Key , typename Alloc >
INLINE const Set< Key, Alloc >::iterator_safe & gum::Set< Key, Alloc >::endSafe ( ) const
noexcept

The usual safe end iterator to parse the set.

Returns
Returns the usual safe end iterator to parse the set.

Definition at line 501 of file set_tpl.h.

501  {
502  return *(reinterpret_cast< const SetIteratorSafe< Key >* >(
503  SetIteratorStaticEnd::SetIterEndSafe__));
504  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:772

◆ endSafe4Statics()

template<typename Key , typename Alloc >
INLINE const SetIteratorSafe< Key > & gum::Set< Key, Alloc >::endSafe4Statics ( )
static

Returns the end iterator for other classes' statics (read the detailed description of this method).

To reduce the Sets memory consumption (which are heavily used in aGrUM) while allowing fast for(iter=begin(); iter!=end();++iter) loops, end iterators are created just once as a static member of a non-template Set. While this scheme is efficient and it works quite effectively when manipulating sets, it has a drawback: other classes with static members using the Set's end() iterator may fail to work due to the well known "static initialization order fiasco" (see Marshall Cline's C++ FAQ for more details about this C++ feature). OK, so what is the problem? Consider a class, say X, containing a Set that stores all its elements in a convenient way. To reduce memory consumption, X::end iterator is a static member that is initialized with a Set::end iterator. If the compiler decides to initialize X::end before initializing Set::end, then X::end will be in an incoherent state. Unfortunately, we cannot know for sure in which order static members will be initialized (the order is a compiler's decision). Hence, we shall enfore the fact that Set::end is initialized before X::end. Using method Set::end4Statics will ensure this fact: it uses the C++ "construct on first use" idiom (see the C++ FAQ) that ensures that the order fiasco is avoided. More precisely, end4Statics uses a global variable that is the very end iterator used by all Sets. Now, this induces a small overhead. So, we also provide a Set::end() method that returns the Set::end iterator without this small overhead, but assuming that function end4Statics has already been called once (which is always the case) when a Set has been created.

So, to summarize: when initializing static members, use endSafe4Statics() rather than endSafe (). In all the other cases, use simply the usual method endSafe ().

Returns
Returns the end iterator for other classes' statics (read the detailed description of this method).

Definition at line 290 of file set_tpl.h.

290  {
291  return *(reinterpret_cast< const SetIteratorSafe< Key >* >(
292  SetIteratorStaticEnd::endSafe4Statics()));
293  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:772

◆ erase() [1/2]

template<typename Key, typename Alloc >
INLINE void gum::Set< Key, Alloc >::erase ( const Key &  k)

Erases an element from the set.

Parameters
kThe element to remove.
Warning
if the set does not contain the element, nothing is done. In particular, no exception is thrown.

Definition at line 675 of file set_tpl.h.

675  {
676  // erase the element (if it exists)
677  inside__.erase(k);
678 
679  // Note that actually there is no need to update the end iterator as this
680  // one
681  // is not affected by changes within hashtables (adding/deleting elements).
682  // Hence, for speedup, we do not update the end iterator
683  }
void erase(const Key &key)
Removes a given element from the hash table.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ erase() [2/2]

template<typename Key, typename Alloc >
INLINE void gum::Set< Key, Alloc >::erase ( const iterator_safe k)

Erases an element from the set.

Parameters
kThe iterator pointing to the element to remove.
Warning
if the set does not contain the element, nothing is done. In particular, no exception is thrown.

Definition at line 687 of file set_tpl.h.

687  {
688  // erase the element
689  inside__.erase(iter.ht_iter__);
690 
691  // Note that actually there is no need to update the end iterator as this
692  // one
693  // is not affected by changes within hashtables (adding/deleting elements).
694  // Hence, for speedup, we do not update the end iterator
695  }
void erase(const Key &key)
Removes a given element from the hash table.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ exists()

template<typename Key, typename Alloc >
INLINE bool gum::Set< Key, Alloc >::exists ( const Key &  k) const

Indicates whether a given elements belong to the set.

Returns
Returns true if a given elements belong to the set.

Definition at line 626 of file set_tpl.h.

626  {
627  return inside__.exists(k);
628  }
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ hashMap() [1/2]

template<typename Key, typename Alloc >
template<typename NewKey , typename NewAlloc >
HashTable< Key, NewKey, NewAlloc > gum::Set< Key, Alloc >::hashMap ( NewKey(*)(const Key &)  f,
Size  capacity = 0 
) const

Creates a hashtable of NewKey from the set.

Warning
The order in the resulting hashtable may not be similar to that of the original set. Hence iterators on the former may not parse it in the same order as iterators on the latter.
Parameters
fA function that maps Key into a NewKey
capacityThe size of the resulting hashtable. When equal to 0, a default size is computed that is a good trade-off between space consumption and efficiency of new elements insertions.

Definition at line 857 of file set_tpl.h.

857  {
858  // determine the proper size of the hashtable
859  // by default, the size of the table is set so that the table does not take
860  // too much space while allowing to add a few elements without resizing
861  if (size == 0) size = std::max(Size(2), inside__.size() / 2);
862 
863  // create a new table
864  HashTable< Key, NewKey, NewAlloc > table(size);
865 
866  // fill the new hash table
868  iter != inside__.cend();
869  ++iter) {
870  table.insert(iter.key(), f(iter.key()));
871  }
872 
873  return table;
874  }
Size size() const noexcept
Returns the number of elements stored into the hashtable.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
const const_iterator & cend() const noexcept
Returns the unsafe const_iterator pointing to the end of the hashtable.
const_iterator cbegin() const
Returns an unsafe const_iterator pointing to the beginning of the hashtable.
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:47
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:720

◆ hashMap() [2/2]

template<typename Key, typename Alloc >
template<typename NewKey , typename NewAlloc >
HashTable< Key, NewKey, NewAlloc > gum::Set< Key, Alloc >::hashMap ( const NewKey &  val,
Size  size = 0 
) const

Creates a hash table of NewKey from the set.

Warning
The order in the resulting hash table may not be similar to that of the original set. Hence iterators on the former may not parse it in the same order as iterators on the latter.
Parameters
valThe value taken by all the elements of the resulting hashtable.
sizeThe size of the resulting hash table. When equal to 0, a default size is computed that is a good trade-off between space consumption and efficiency of new elements insertions.

Definition at line 879 of file set_tpl.h.

880  {
881  // determine the proper size of the hashtable
882  // by default, the size of the table is set so that the table does not take
883  // too much space while allowing to add a few elements without resizing
884  if (size == 0) size = std::max(Size(2), inside__.size() / 2);
885 
886  // create a new table
887  HashTable< Key, NewKey, NewAlloc > table(size);
888 
889  // fill the new hash table
891  iter != inside__.cend();
892  ++iter) {
893  table.insert(iter.key(), val);
894  }
895 
896  return table;
897  }
Size size() const noexcept
Returns the number of elements stored into the hashtable.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
const const_iterator & cend() const noexcept
Returns the unsafe const_iterator pointing to the end of the hashtable.
const_iterator cbegin() const
Returns an unsafe const_iterator pointing to the beginning of the hashtable.
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition: types.h:47
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:720

◆ insert() [1/2]

template<typename Key, typename Alloc >
INLINE void gum::Set< Key, Alloc >::insert ( const Key &  k)

Inserts a new element into the set.

Parameters
kThe new element to insert.
Warning
if the set already contains the element, nothing is done. In particular, it is not added to the set and no exception is thrown.

Definition at line 632 of file set_tpl.h.

632  {
633  // WARNING: we shall always test whether k already belongs to the set before
634  // trying to insert it because we set inside__'s key uniqueness policy to
635  // false
636  if (!contains(k)) {
637  // insert the element
638  inside__.insert(k, true);
639 
640  // Note that actually there is no need to update the end iterator as this
641  // one
642  // is not affected by changes within hashtables (adding/deleting
643  // elements).
644  // Hence, for speedup, we do not update the end iterator
645  }
646  }
bool contains(const Key &k) const
Indicates whether a given elements belong to the set.
Definition: set_tpl.h:580
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.

◆ insert() [2/2]

template<typename Key, typename Alloc >
INLINE void gum::Set< Key, Alloc >::insert ( Key &&  k)

Inserts a new element into the set.

Parameters
kThe new element to insert.
Warning
if the set already contains the element, nothing is done. In particular, it is not added to the set and no exception is thrown.

Definition at line 650 of file set_tpl.h.

650  {
651  // WARNING: we shall always test whether k already belongs to the set before
652  // trying to insert it because we set inside__'s key uniqueness policy to
653  // false
654  if (!contains(k)) {
655  // insert the element
656  inside__.insert(std::move(k), true);
657 
658  // Note that actually there is no need to update the end iterator as this
659  // one
660  // is not affected by changes within hashtables (adding/deleting
661  // elements).
662  // Hence, for speedup, we do not update the end iterator
663  }
664  }
bool contains(const Key &k) const
Indicates whether a given elements belong to the set.
Definition: set_tpl.h:580
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.

◆ isProperSubsetOf() [1/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
bool gum::Set< Key, Alloc >::isProperSubsetOf ( const Set< Key, OtherAlloc > &  s) const
Returns
Returns true if *this is a proper subset of s

◆ isProperSubsetOf() [2/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
INLINE bool gum::Set< Key, Alloc >::isProperSubsetOf ( const Set< Key, OtherAlloc > &  s) const

Definition at line 588 of file set_tpl.h.

588  {
589  if (this->size() >= s.size()) { return false; }
590 
591  for (const auto& elt: *this) {
592  if (!s.contains(elt)) { return false; }
593  }
594  return true;
595  }
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:720

◆ isProperSupersetOf() [1/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
bool gum::Set< Key, Alloc >::isProperSupersetOf ( const Set< Key, OtherAlloc > &  s) const
Returns
Returns true if *this is a proper superset of s

◆ isProperSupersetOf() [2/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
INLINE bool gum::Set< Key, Alloc >::isProperSupersetOf ( const Set< Key, OtherAlloc > &  s) const

Definition at line 600 of file set_tpl.h.

600  {
601  return s.isProperSubsetOf(*this);
602  }

◆ isSubsetOrEqual() [1/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
bool gum::Set< Key, Alloc >::isSubsetOrEqual ( const Set< Key, OtherAlloc > &  s) const
Returns
Returns true if *this is a subset of s (or equal to s)

◆ isSubsetOrEqual() [2/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
INLINE bool gum::Set< Key, Alloc >::isSubsetOrEqual ( const Set< Key, OtherAlloc > &  s) const

Definition at line 608 of file set_tpl.h.

608  {
609  if (this->size() > s.size()) { return false; }
610 
611  for (const auto& elt: *this) {
612  if (!s.contains(elt)) { return false; }
613  }
614  return true;
615  }
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:720

◆ isSupersetOrEqual() [1/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
bool gum::Set< Key, Alloc >::isSupersetOrEqual ( const Set< Key, OtherAlloc > &  s) const
Returns
Returns true if *this is a superset of s (or equal to s)

◆ isSupersetOrEqual() [2/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
INLINE bool gum::Set< Key, Alloc >::isSupersetOrEqual ( const Set< Key, OtherAlloc > &  s) const

Definition at line 620 of file set_tpl.h.

620  {
621  return s.isSubsetOrEqual(*this);
622  }

◆ listMap()

template<typename Key, typename Alloc >
template<typename NewKey , typename NewAlloc >
List< NewKey, NewAlloc > gum::Set< Key, Alloc >::listMap ( NewKey(*)(const Key &)  f) const

A method to create a List of NewKey from the set.

Warning
The order of the NewKey elements in the resulting list is arbitrary.
Parameters
fA function that maps a Key into a NewKey

Definition at line 903 of file set_tpl.h.

903  {
904  // create a new list
905  List< NewKey, NewAlloc > list;
906 
907  // fill the new list
909  iter != inside__.cend();
910  ++iter) {
911  list.pushBack(f(iter.key()));
912  }
913 
914  return list;
915  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
const const_iterator & cend() const noexcept
Returns the unsafe const_iterator pointing to the end of the hashtable.
const_iterator cbegin() const
Returns an unsafe const_iterator pointing to the beginning of the hashtable.

◆ operator!=() [1/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
bool gum::Set< Key, Alloc >::operator!= ( const Set< Key, OtherAlloc > &  s2) const

Mathematical inequality between two sets.

Parameters
s2The gum::Set to test for inequality.
Template Parameters
OtherAllocThe other gum::Set allocator.
Returns
Returns true if both gum::Set are not equal.

◆ operator!=() [2/2]

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename OtherAlloc >
INLINE bool gum::Set< Key, Alloc >::operator!= ( const Set< Key, OtherAlloc > &  s2) const

Definition at line 480 of file set_tpl.h.

480  {
481  return !(operator==(s2));
482  }
bool operator==(const Set< Key, OtherAlloc > &s2) const
Mathematical equality between two sets.
Definition: set_tpl.h:460

◆ operator*()

template<typename Key, typename Alloc >
template<typename OtherAlloc >
Set< Key, Alloc > gum::Set< Key, Alloc >::operator* ( const Set< Key, OtherAlloc > &  s2) const

Intersection operator.

Template Parameters
OtherAllocThe other gum::Set allocator.
Parameters
s2The gum::Set to intersect.
Returns
Returns a Set containing the elements belonging both to this and s2.

Definition at line 734 of file set_tpl.h.

734  {
735  Set< Key, Alloc > res;
736  const HashTable< Key, bool, OtherAlloc >& h2 = s2.inside__;
737  HashTable< Key, bool, Alloc >& h_r = res.inside__;
738 
739  if (size() < h2.size()) {
741  iter != inside__.cend();
742  ++iter) {
743  if (h2.exists(iter.key())) h_r.insert(iter.key(), true);
744  }
745  } else {
746  for (HashTableConstIterator< Key, bool > iter = h2.cbegin();
747  iter != h2.cend();
748  ++iter) {
749  if (inside__.exists(iter.key())) h_r.insert(iter.key(), true);
750  }
751  }
752 
753  return res;
754  }
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
const const_iterator & cend() const noexcept
Returns the unsafe const_iterator pointing to the end of the hashtable.
const_iterator cbegin() const
Returns an unsafe const_iterator pointing to the beginning of the hashtable.
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:720
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.

◆ operator*=()

template<typename Key, typename Alloc >
template<typename OtherAlloc >
const Set< Key, Alloc > & gum::Set< Key, Alloc >::operator*= ( const Set< Key, OtherAlloc > &  s2)

Intersection update operator.

Template Parameters
OtherAllocThe other gum::Set allocator.
Parameters
s2The gum::Set to intersect.
Returns
Returns this. Now this contains the elements belonging both to this and s2.

Definition at line 761 of file set_tpl.h.

761  {
762  if (&s2 != this) {
763  const HashTable< Key, bool, OtherAlloc >& h2 = s2.inside__;
764  for (auto iter = inside__.beginSafe(); iter != inside__.endSafe(); ++iter) {
765  if (!h2.exists(iter.key())) inside__.erase(iter);
766  }
767  }
768 
769  return *this;
770  }
const iterator_safe & endSafe() noexcept
Returns the safe iterator pointing to the end of the hashtable.
void erase(const Key &key)
Removes a given element from the hash table.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
iterator_safe beginSafe()
Returns the safe iterator pointing to the beginning of the hashtable.

◆ operator+()

template<typename Key, typename Alloc >
template<typename OtherAlloc >
Set< Key, Alloc > gum::Set< Key, Alloc >::operator+ ( const Set< Key, OtherAlloc > &  s2) const

Union operator.

Template Parameters
OtherAllocThe other gum::Set allocator.
Parameters
s2The gum::Set to union.
Returns
Returns a new Set containing the union of the elements of this and s2.

Definition at line 792 of file set_tpl.h.

792  {
793  Set< Key, Alloc > res = *this;
794  const HashTable< Key, bool, OtherAlloc >& h2 = s2.inside__;
795  HashTable< Key, bool, Alloc >& h_r = res.inside__;
796 
797  for (HashTableConstIterator< Key, bool > iter = h2.cbegin(); iter != h2.cend();
798  ++iter) {
799  if (!h_r.exists(iter.key())) h_r.insert(iter.key(), true);
800  }
801 
802  return res;
803  }
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.

◆ operator+=()

template<typename Key, typename Alloc >
template<typename OtherAlloc >
const Set< Key, Alloc > & gum::Set< Key, Alloc >::operator+= ( const Set< Key, OtherAlloc > &  s2)

Union update operator.

Template Parameters
OtherAllocThe other gum::Set allocator.
Parameters
s2The gum::Set to update
Returns
Returns this. Now this contains the elements belonging both to this or to s2.

Definition at line 777 of file set_tpl.h.

777  {
778  if (&s2 != this) {
779  for (auto pair: s2.inside__) {
780  if (!inside__.exists(pair.first)) inside__.insert(pair.first, true);
781  }
782  }
783 
784  return *this;
785  }
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.

◆ operator-()

template<typename Key, typename Alloc >
template<typename OtherAlloc >
Set< Key, Alloc > gum::Set< Key, Alloc >::operator- ( const Set< Key, OtherAlloc > &  s2) const

Disjunction operator.

Template Parameters
OtherAllocThe other gum::Set allocator.
Parameters
s2The gum::Set to disjunct.
Returns
Returns a Set whose elements belong to this but not to s2.
Warning
Unlike + and *, the - operator is not commutative!

Definition at line 810 of file set_tpl.h.

810  {
811  Set< Key, Alloc > res;
812  const HashTable< Key, bool, OtherAlloc >& h2 = s2.inside__;
813  HashTable< Key, bool, Alloc >& h_r = res.inside__;
814 
816  iter != inside__.cend();
817  ++iter)
818  if (!h2.exists(iter.key())) h_r.insert(iter.key(), true);
819 
820  return res;
821  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
const const_iterator & cend() const noexcept
Returns the unsafe const_iterator pointing to the end of the hashtable.
const_iterator cbegin() const
Returns an unsafe const_iterator pointing to the beginning of the hashtable.
value_type & insert(const Key &key, const Val &val)
Adds a new element (actually a copy of this element) into the hash table.

◆ operator<<() [1/2]

template<typename Key, typename Alloc >
INLINE Set< Key, Alloc > & gum::Set< Key, Alloc >::operator<< ( Key &&  k)

Adds a new element to the set (alias for insert).

Parameters
kThe new element to add.
Returns
Returns this gum::Set.

Definition at line 706 of file set_tpl.h.

706  {
707  insert(std::move(k));
708  return *this;
709  }
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:632

◆ operator<<() [2/2]

template<typename Key, typename Alloc >
INLINE Set< Key, Alloc > & gum::Set< Key, Alloc >::operator<< ( const Key &  k)

Adds a new element to the set (alias for insert).

Parameters
kThe new element to add.
Returns
Returns this gum::Set.

Definition at line 699 of file set_tpl.h.

699  {
700  insert(k);
701  return *this;
702  }
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:632

◆ operator=() [1/3]

template<typename Key, typename Alloc>
Set< Key, Alloc > & gum::Set< Key, Alloc >::operator= ( const Set< Key, Alloc > &  from)

Copy operator.

Parameters
fromThe gum::Set to copy.
Returns
Returns this gum::Set.

Definition at line 390 of file set_tpl.h.

390  {
391  // avoid self assignment
392  if (&s != this) {
393  // remove the old content of the set. Actually, we remove all the elements
394  // from the underlying hashtable. Note that, doing so, all the hashtable
395  // iterators will be updated as well. In turn, this will imply that,
396  // whenever
397  // an operation will be performed on a SetIteratorSafe, this will raise an
398  // exception.
399  clear();
400 
401  // prepare the set for its new data
402  resize(s.capacity());
403  setResizePolicy(s.resizePolicy());
404 
405  // copy the set
406  inside__ = s.inside__;
407 
408  // Note that actually there is no need to update the end iterator as this
409  // one
410  // is not affected by changes within hashtables (adding/deleting
411  // elements).
412  // Hence, for speedup, we do not update the end iterator
413  }
414 
415  return *this;
416  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
void resize(Size new_capacity)
Changes the size of the underlying hash table containing the set.
Definition: set_tpl.h:551
void setResizePolicy(const bool new_policy)
Enables the user to change dynamically the resizing policy of the underlying hash table...
Definition: set_tpl.h:563
void clear()
Removes all the elements, if any, from the set.
Definition: set_tpl.h:374

◆ operator=() [2/3]

template<typename Key, typename Alloc >
template<typename OtherAlloc >
Set< Key, Alloc > & gum::Set< Key, Alloc >::operator= ( const Set< Key, OtherAlloc > &  from)

Generalized copy operator.

Parameters
fromThe gum::Set to copy.
Template Parameters
OtherAllocThe other gum::Set allocator.
Returns
Returns this gum::Set.

Definition at line 422 of file set_tpl.h.

422  {
423  // avoid self assignment
424  if (this != reinterpret_cast< const Set< Key, Alloc >* >(&s)) {
425  // remove the old content of the set. Actually, we remove all the elements
426  // from the underlying hashtable. Note that, doing so, all the hashtable
427  // iterators will be updated as well. In turn, this will imply that,
428  // whenever
429  // an operation will be performed on a SetIteratorSafe, this will raise an
430  // exception.
431  clear();
432 
433  // prepare the set for its new data
434  resize(s.capacity());
435  setResizePolicy(s.resizePolicy());
436 
437  // copy the set
438  inside__ = s.inside__;
439 
440  // Note that actually there is no need to update the end iterator as this
441  // one
442  // is not affected by changes within hashtables (adding/deleting
443  // elements).
444  // Hence, for speedup, we do not update the end iterator
445  }
446 
447  return *this;
448  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
void resize(Size new_capacity)
Changes the size of the underlying hash table containing the set.
Definition: set_tpl.h:551
void setResizePolicy(const bool new_policy)
Enables the user to change dynamically the resizing policy of the underlying hash table...
Definition: set_tpl.h:563
void clear()
Removes all the elements, if any, from the set.
Definition: set_tpl.h:374

◆ operator=() [3/3]

template<typename Key, typename Alloc>
Set< Key, Alloc > & gum::Set< Key, Alloc >::operator= ( Set< Key, Alloc > &&  from)

Move operator.

Parameters
fromThe gum::Set to move.
Returns
Returns this gum::Set.

Definition at line 452 of file set_tpl.h.

452  {
453  inside__ = std::move(from.inside__);
454  return *this;
455  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ operator==()

template<typename Key, typename Alloc >
template<typename OtherAlloc >
bool gum::Set< Key, Alloc >::operator== ( const Set< Key, OtherAlloc > &  s2) const

Mathematical equality between two sets.

Parameters
s2The gum::Set to test for equality.
Template Parameters
OtherAllocThe other gum::Set allocator.
Returns
Returns true if both gum::Set are equal.

Definition at line 460 of file set_tpl.h.

460  {
461  const HashTable< Key, bool, OtherAlloc >& h2 = s2.inside__;
462 
463  // check whether both sets have the same number of elements
464  if (size() != h2.size()) return false;
465 
466  // check the content of the sets
468  iter != inside__.cend();
469  ++iter) {
470  if (!h2.exists(iter.key())) return false;
471  }
472 
473  return true;
474  }
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778
const const_iterator & cend() const noexcept
Returns the unsafe const_iterator pointing to the end of the hashtable.
const_iterator cbegin() const
Returns an unsafe const_iterator pointing to the beginning of the hashtable.
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:720

◆ operator>>()

template<typename Key, typename Alloc >
INLINE Set< Key, Alloc > & gum::Set< Key, Alloc >::operator>> ( const Key &  k)

Removes an element from the set (alias for erase).

Parameters
kThe element to remove.
Returns
Return this gum::Set.

Definition at line 713 of file set_tpl.h.

713  {
714  erase(k);
715  return *this;
716  }
void erase(const Key &k)
Erases an element from the set.
Definition: set_tpl.h:675

◆ resize()

template<typename Key , typename Alloc >
INLINE void gum::Set< Key, Alloc >::resize ( Size  new_capacity)

Changes the size of the underlying hash table containing the set.

See gum::HashTable::resize(Size) method resize for more details.

Parameters
new_capacityThe underlying hash table new size.

Definition at line 551 of file set_tpl.h.

551  {
552  inside__.resize(new_size);
553 
554  // Note that actually there is no need to update the end iterator as this
555  // one
556  // is not affected by changes within hashtables (adding/deleting elements).
557  // Hence, for speedup, we do not update the end iterator
558  }
void resize(Size new_size)
Changes the number of slots in the &#39;nodes&#39; vector of the hash table.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ resizePolicy()

template<typename Key , typename Alloc >
INLINE bool gum::Set< Key, Alloc >::resizePolicy ( ) const

Returns the current resizing policy of the underlying hash table.

Returns
Returns the current resizing policy of the underlying hash table.

Definition at line 574 of file set_tpl.h.

574  {
575  return inside__.resizePolicy();
576  }
bool resizePolicy() const noexcept
Returns the current resizing policy.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ setResizePolicy()

template<typename Key , typename Alloc >
INLINE void gum::Set< Key, Alloc >::setResizePolicy ( const bool  new_policy)

Enables the user to change dynamically the resizing policy of the underlying hash table.

When new_policy is false, the set will not try to change its memory size, hence resulting in potentially slower accesses.

Parameters
new_policyIf true the set updates dynamically its memory consumption to guarantee that its elements are fast to retrieve.

Definition at line 563 of file set_tpl.h.

563  {
564  inside__.setResizePolicy(new_policy);
565 
566  // Note that actually there is no need to update the end iterator as this
567  // one
568  // is not affected by changes within hashtables (adding/deleting elements).
569  // Hence, for speedup, we do not update the end iterator
570  }
void setResizePolicy(const bool new_policy) noexcept
Enables the user to change dynamically the resizing policy.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ size()

template<typename Key , typename Alloc >
INLINE Size gum::Set< Key, Alloc >::size ( ) const
noexcept

Returns the number of elements in the set.

Returns
Returns the number of elements in the set.

Definition at line 720 of file set_tpl.h.

720  {
721  return inside__.size();
722  }
Size size() const noexcept
Returns the number of elements stored into the hashtable.
HashTable< Key, bool, Alloc > inside__
A set of X&#39;s is actually a hash table whose keys are the X&#39;s.
Definition: set.h:778

◆ toString()

template<typename Key , typename Alloc >
INLINE std::string gum::Set< Key, Alloc >::toString ( ) const

Prints the content of the set.

Returns
Returns the content of the set.

Definition at line 825 of file set_tpl.h.

825  {
826  std::stringstream out;
827  bool first = true;
828  out << "{";
829 
830  for (iterator iter = begin(); iter != end(); ++iter) {
831  if (first) {
832  out << *iter;
833  first = false;
834  } else {
835  out << "," << *iter;
836  }
837  }
838 
839  out << "}";
840 
841  std::string res;
842  out >> res;
843  return res;
844  }
const iterator & end() const noexcept
The usual unsafe end iterator to parse the set.
Definition: set_tpl.h:530
iterator begin() const
The usual unsafe begin iterator to parse the set.
Definition: set_tpl.h:516
SetIterator< Key > iterator
Types for STL compliance.
Definition: set.h:176

Friends And Related Function Documentation

◆ Set

template<typename Key, typename Alloc = std::allocator< Key >>
template<typename K , typename A >
friend class Set
friend

Friends to speed up access.

Definition at line 774 of file set.h.

◆ SetIterator< Key >

template<typename Key, typename Alloc = std::allocator< Key >>
friend class SetIterator< Key >
friend

Friends to speed up access.

Definition at line 771 of file set.h.

◆ SetIteratorSafe< Key >

template<typename Key, typename Alloc = std::allocator< Key >>
friend class SetIteratorSafe< Key >
friend

Friends to speed up access.

Definition at line 772 of file set.h.

Member Data Documentation

◆ inside__

template<typename Key, typename Alloc = std::allocator< Key >>
HashTable< Key, bool, Alloc > gum::Set< Key, Alloc >::inside__
private

A set of X's is actually a hash table whose keys are the X's.

Definition at line 778 of file set.h.


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