aGrUM  0.20.3
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 308 of file set_tpl.h.

308  :
309  // create the hash table without key uniqueness policy (as we will
310  // check
311  // ourselves the uniqueness of Keys before inserting new elements)
312  _inside_(capacity, resize_policy, false) {
313  GUM_CONSTRUCTOR(Set);
314 
315  // make sure the end() iterator is constructed properly
316  endSafe4Statics();
317  end4Statics();
318  }
Size capacity() const
Returns the capacity of the underlying hash table containing the set.
Definition: set_tpl.h:523
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:772
static const iterator & end4Statics()
Returns the end iterator for other classes&#39; statics (read the detailed description of this method)...
Definition: set_tpl.h:295
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:281
friend class Set
Friends to speed up access.
Definition: set.h:768

◆ 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 322 of file set_tpl.h.

322  :
323  _inside_(Size(list.size()) / 2, true, false) {
324  GUM_CONSTRUCTOR(Set);
325  for (const auto& elt: list) {
326  insert(elt);
327  }
328 
329  // make sure the end() iterator is constructed properly
330  endSafe4Statics();
331  end4Statics();
332  }
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:772
static const iterator & end4Statics()
Returns the end iterator for other classes&#39; statics (read the detailed description of this method)...
Definition: set_tpl.h:295
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:281
friend class Set
Friends to speed up access.
Definition: set.h:768
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:606

◆ 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 336 of file set_tpl.h.

336  : _inside_(s._inside_) {
337  GUM_CONS_CPY(Set);
338  }
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:772
friend class Set
Friends to speed up access.
Definition: set.h:768

◆ 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 349 of file set_tpl.h.

349  : _inside_(std::move(s._inside_)) {
350  GUM_CONS_MOV(Set);
351  }
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:772
friend class Set
Friends to speed up access.
Definition: set.h:768

◆ ~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 343 of file set_tpl.h.

343  : _inside_(s._inside_) {
344  GUM_CONS_CPY(Set);
345  }
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:772
friend class Set
Friends to speed up access.
Definition: set.h:768

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 498 of file set_tpl.h.

498  {
499  return SetIterator< Key >{*this};
500  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:765

◆ 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 470 of file set_tpl.h.

470  {
471  return SetIteratorSafe< Key >{*this};
472  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:766

◆ 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 523 of file set_tpl.h.

523  {
524  return _inside_.capacity();
525  }
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:772
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 504 of file set_tpl.h.

504  {
505  return SetIterator< Key >{*this};
506  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:765

◆ 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 476 of file set_tpl.h.

476  {
477  return SetIteratorSafe< Key >{*this};
478  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:766

◆ 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 517 of file set_tpl.h.

517  {
518  return *(reinterpret_cast< const SetIterator< Key >* >(SetIteratorStaticEnd::_SetIterEnd_));
519  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:765

◆ 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 491 of file set_tpl.h.

491  {
492  return *(
493  reinterpret_cast< const SetIteratorSafe< Key >* >(SetIteratorStaticEnd::_SetIterEndSafe_));
494  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:766

◆ 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 361 of file set_tpl.h.

361  {
362  // first we remove all the elements from the hashtable actually containing
363  // the elements of the set. Note that, doing so, all the hashtable iterators
364  // will be updated as well. In turn, this will imply that, whenever an
365  // operation will be performed on a SetIteratorSafe, this will raise an
366  // exception.
367  _inside_.clear();
368 
369  // Note that actually there is no need to update the end iterator as this
370  // one
371  // is not affected by changes within hashtables (adding/deleting elements).
372  // Hence, for speedup, we do not update the end iterator
373  }
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:772
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 301 of file set_tpl.h.

301  {
302  return *(
303  reinterpret_cast< const SetIterator< Key >* >(SetIteratorStaticEnd::constEnd4Statics()));
304  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:765

◆ 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 288 of file set_tpl.h.

288  {
289  return *(reinterpret_cast< const SetIteratorSafe< Key >* >(
290  SetIteratorStaticEnd::constEndSafe4Statics()));
291  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:766

◆ 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 558 of file set_tpl.h.

558  {
559  return _inside_.exists(k);
560  }
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:772
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.

◆ 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 643 of file set_tpl.h.

Referenced by gum::Instantiation::_add_(), gum::NodeGraphPart::_addHole_(), gum::LeafAggregator::_addInitialPair_(), gum::IMDDI< AttributeSelection, isScalar >::_addLeaf_(), gum::NodeDatabase< AttributeSelection, isScalar >::_addObservation_(), gum::VariableSelector::_addVar_(), gum::MultiDimBucket< GUM_SCALAR >::_addVariable_(), gum::DAGCycleDetector::_addWeightedSet_(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::_adjacentSwap_(), gum::FixedAllocator::_Chunk_::_allocate_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_AorR_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_AR_(), gum::FusionContext< true >::_associatedPairs_(), gum::FusionContext< true >::_associateLeaf_(), gum::Listener::_attachSignal_(), gum::EssentialGraph::_buildEssentialGraph_(), gum::MarkovBlanket::_buildMarkovBlanket_(), 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::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::InfluenceDiagramGenerator< GUM_SCALAR >::_checkTemporalOrder_(), gum::BayesNetFactory< GUM_SCALAR >::_checkVariableModality_(), gum::BayesNetFactory< GUM_SCALAR >::_checkVariableName_(), gum::Instantiation::_chgVal_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_chooseCloseNodes_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_chooseNodes_(), gum::NodeGraphPart::_clearNodes_(), gum::BayesNet< double >::_clearPotentials_(), gum::AdaptiveRMaxPlaner::_clearTables_(), gum::BinaryJoinTreeConverterDefault::_combinedSize_(), 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::DefaultJunctionTreeStrategy::_computeJunctionTree_(), gum::StaticTriangulation::_computeMaxPrimeJunctionTree_(), gum::StaticTriangulation::_computeMaxPrimeMergings_(), gum::StaticTriangulation::_computeRecursiveThinning_(), gum::MultiDimBucket< GUM_SCALAR >::_computeValue_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_connect_(), gum::BinaryJoinTreeConverterDefault::_convertClique_(), gum::BinaryJoinTreeConverterDefault::_convertConnectedComponent_(), 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::BayesNet< double >::_copyPotentials_(), gum::List< const gum::Potential< GUM_SCALAR > * >::_createBucket_(), 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::Chi2::_criticalValue_(), gum::FixedAllocator::_Chunk_::_deallocat_(), gum::FusionContext< true >::_deassociateLeaf_(), gum::LinearApproximationPolicy< GUM_SCALAR >::_decode_(), gum::DAGCycleDetector::_delWeightedSet_(), gum::RefPtr< Val >::_destroy_(), gum::Listener::_detachSignal_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_directedPath_(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::_distance_(), gum::IMDDI< AttributeSelection, isScalar >::_downdateScore_(), gum::GibbsOperator< GUM_SCALAR >::_drawVarMonteCarlo_(), gum::EliminationSequenceStrategy::_empty_fill_ins_(), gum::LinearApproximationPolicy< GUM_SCALAR >::_encode_(), gum::Instantiation::_erase_(), gum::List< const gum::Potential< GUM_SCALAR > * >::_erase_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_eraseArc_(), gum::MultiDimBucket< GUM_SCALAR >::_eraseBuffer_(), gum::NodeGraphPart::_eraseHole_(), gum::MultiDimBucket< GUM_SCALAR >::_eraseVariable_(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::_establishVarOrder_(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::_establishVarOrder_(), gum::TaxiSimulator::_evalReward_(), gum::SpanningForestPrim::_exploreNode_(), gum::BayesNetFactory< GUM_SCALAR >::_fillProbaWithValuesTable_(), gum::Formula::_finalize_(), gum::FMDPFactory< GUM_SCALAR >::_finalizeFunctionGraph_(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::_findRetrogradeVariables_(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::_findRetrogradeVariables_(), gum::FormulaPart::_function_argc_(), gum::FormulaPart::_function_eval_(), gum::O3prmBNReader< GUM_SCALAR >::_generateBN_(), gum::MultiDimFunctionGraphGenerator::_generateVarPos_(), gum::List< const gum::Potential< GUM_SCALAR > * >::_getBucket_(), gum::ListConstIterator< Val >::_getBucket_(), gum::ListConstIteratorSafe< Val >::_getBucket_(), gum::O3prmBNReader< GUM_SCALAR >::_getEntityName_(), gum::O3prmBNReader< GUM_SCALAR >::_getInstanceName_(), gum::List< const gum::Potential< GUM_SCALAR > * >::_getIthBucket_(), gum::O3prmBNReader< GUM_SCALAR >::_getVariableName_(), gum::GibbsOperator< GUM_SCALAR >::_GibbsSample_(), gum::FMDPFactory< GUM_SCALAR >::_illegalStateError_(), gum::BayesNetFactory< GUM_SCALAR >::_illegalStateError_(), gum::BayesNetFactory< GUM_SCALAR >::_increment_(), gum::StatesCounter::_incState_(), gum::NodeGraphPart::_inHoles_(), gum::FixedAllocator::_Chunk_::_init_(), gum::Instantiation::_init_(), gum::Formula::_initialise_(), gum::MultiDimBucket< GUM_SCALAR >::_initializeBuffer_(), gum::FMDPFactory< GUM_SCALAR >::_initializeFunctionGraph_(), 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::IMDDI< AttributeSelection, isScalar >::_insertLeafInFunctionGraph_(), gum::ITI< AttributeSelection, isScalar >::_insertNodeInFunctionGraph_(), gum::StatesChecker::_insertState_(), gum::ITI< AttributeSelection, isScalar >::_insertTerminalNode_(), gum::TaxiSimulator::_isAtDestination_(), gum::TaxiSimulator::_isAtMeetPoint_(), gum::GraphicalModelInference< GUM_SCALAR >::_isHardEvidence_(), gum::OrderedEliminationSequenceStrategy::_isOrderNeeded_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_isPolytree_(), gum::MultiDimFunctionGraphManager< bool, ExactTerminalNodePolicy >::_isRedundant_(), gum::Formula::_isUnaryOperator_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_jump_multi_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_jump_poly_(), gum::AdaptiveRMaxPlaner::_makeRMaxFunctionGraphs_(), gum::BinaryJoinTreeConverterDefault::_markConnectedComponent_(), gum::Instantiation::_masterChangeNotification_(), gum::Instantiation::_masterDecNotification_(), gum::Instantiation::_masterFirstNotification_(), gum::Instantiation::_masterIncNotification_(), gum::Instantiation::_masterLastNotification_(), gum::IMarkovNet< GUM_SCALAR >::_minimalCondSetVisit_(), gum::IBayesNet< double >::_minimalCondSetVisitDn_(), gum::IBayesNet< double >::_minimalCondSetVisitUp_(), gum::DefaultPartialOrderedEliminationSequenceStrategy::_nodeToEliminate_(), gum::FormulaPart::_operator_argc_(), gum::FormulaPart::_operator_eval_(), gum::ListConstIteratorSafe< Val >::_opMinus_(), gum::ListConstIteratorSafe< Val >::_opPlus_(), gum::TaxiSimulator::_performFillUp_(), gum::TaxiSimulator::_performGoEast_(), gum::TaxiSimulator::_performGoNorth_(), gum::TaxiSimulator::_performGoSouth_(), gum::TaxiSimulator::_performGoWest_(), gum::TaxiSimulator::_performPickUp_(), gum::TaxiSimulator::_performPutDown_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_PMMx_multi_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_PMMx_poly_(), gum::Formula::_popOperator_(), gum::ChiSquare::_probaZValue_(), gum::Chi2::_probaZValue_(), gum::Formula::_push_comma_(), 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::List< const gum::Potential< GUM_SCALAR > * >::_pushBack_(), gum::List< const gum::Potential< GUM_SCALAR > * >::_pushFront_(), gum::IMDDI< AttributeSelection, isScalar >::_rebuildFunctionGraph_(), gum::StructuredPlaner< double >::_recurArgMaxCopy_(), gum::StructuredPlaner< double >::_recurExtractOptPol_(), gum::Formula::_reduceOperatorOrFunction_(), gum::RefPtr< Val >::_refCountPtr_(), gum::FixedAllocator::_Chunk_::_release_(), gum::LeafAggregator::_removeContext_(), gum::ListConstIteratorSafe< Val >::_removeFromSafeList_(), gum::LeafAggregator::_removeInitialPair_(), gum::IMDDI< AttributeSelection, isScalar >::_removeLeaf_(), gum::VariableSelector::_removeVar_(), gum::Instantiation::_reorder_(), gum::FMDPFactory< GUM_SCALAR >::_resetParts_(), gum::BayesNetFactory< GUM_SCALAR >::_resetParts_(), gum::DAGCycleDetector::_restrictWeightedSet_(), gum::SequenceIteratorSafe< NodeId >::_setAtEnd_(), gum::SequenceIteratorSafe< NodeId >::_setAtRend_(), gum::BayesNetInference< GUM_SCALAR >::_setBayesNetDuringConstruction_(), gum::BayesNetFactory< GUM_SCALAR >::_setCPTAndParents_(), gum::MarkovNetInference< GUM_SCALAR >::_setMarkovNetDuringConstruction_(), gum::InternalNode::_setNodeVar_(), gum::MultiDimImplementation< std::string >::_setNotCommitedChange_(), gum::SequenceIteratorSafe< NodeId >::_setPos_(), gum::NodeGraphPart::_sizeHoles_(), gum::EssentialGraph::_strongly_protected_(), gum::Instantiation::_swap_(), gum::DiGraph::_topologicalOrder_(), gum::StructuredPlaner< double >::_transferActionIds_(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::_transformPoly_(), gum::StaticTriangulation::_triangulate_(), gum::BayesNet< double >::_unsafeChangePotential_(), 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::FusionContext< true >::_updateAssociatedLeaf_(), gum::NodeGraphPart::_updateEndIteratorSafe_(), gum::LeafAggregator::_updateInitialPair_(), gum::IMDDI< AttributeSelection, isScalar >::_updateNodeSet_(), gum::GibbsOperator< GUM_SCALAR >::_updateSamplingNodes_(), gum::IMDDI< AttributeSelection, isScalar >::_updateScore_(), gum::AdaptiveRMaxPlaner::_visitLearner_(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::_xPloreDT1_(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::_xPloreDT2_(), gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::_xPloreVFunc_(), 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::MultiDimBijArray< GUM_SCALAR >::add(), gum::Chi2TestPolicy< GUM_SCALAR >::add(), gum::MultiDimArray< GUM_SCALAR >::add(), gum::LeastSquareTestPolicy< GUM_SCALAR >::add(), gum::TreeOperatorStrategy< GUM_SCALAR >::add(), gum::GTestPolicy< 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::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::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::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::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::SamplingInference< GUM_SCALAR >::addVarSample_(), gum::ErrorsContainer::addWarning(), gum::BayesNet< double >::addWeightedArc(), gum::Instantiation::addWithMaster(), gum::MixedGraph::adjacents(), gum::AggregatorDecomposition< GUM_SCALAR >::AggregatorDecomposition(), gum::SmallObjectAllocator::allocate(), gum::FixedAllocator::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::MultiDimArray< GUM_SCALAR >::apply(), gum::MultiDimDecorator< GUM_SCALAR >::apply(), gum::MultiDimContainer< GUM_SCALAR >::apply(), gum::ApproximationScheme::ApproximationScheme(), gum::ApproximationSchemeListener::ApproximationSchemeListener(), 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::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::atPos(), 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::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::BayesNetFragment< GUM_SCALAR >::checkConsistency(), gum::E_GreedyDecider::checkState(), gum::GraphicalModelInference< GUM_SCALAR >::chgEvidence(), gum::IMDDI< AttributeSelection, isScalar >::chgNodeBoundVar_(), gum::ITI< AttributeSelection, isScalar >::chgNodeBoundVar_(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::chgNodeBoundVar_(), gum::Instantiation::chgVal(), gum::O4DGContext::chgVarModality(), gum::Chi2::Chi2(), gum::MarkovBlanket::children(), gum::EssentialGraph::children(), gum::DAGmodel::children(), gum::ArcGraphPart::children(), 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::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::clear(), gum::Set< gum::Potential< GUM_SCALAR > * >::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::LinearApproximationPolicy< GUM_SCALAR >::combineAdd(), gum::LinearApproximationPolicy< GUM_SCALAR >::combineDiv(), 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::MultiDimWithOffset< GUM_SCALAR >::computeInstantiationValue_(), gum::ExactBNdistance< GUM_SCALAR >::computeKL_(), gum::GibbsBNdistance< GUM_SCALAR >::computeKL_(), gum::LinearApproximationPolicy< GUM_SCALAR >::computeNbInterval_(), gum::Chi2TestPolicy< GUM_SCALAR >::computeScore(), gum::LeastSquareTestPolicy< GUM_SCALAR >::computeScore(), gum::GTestPolicy< GUM_SCALAR >::computeScore(), gum::Estimator< GUM_SCALAR >::confidence(), 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::IncrementalGraphLearner< AttributeSelection, isScalar >::convertNode2Leaf_(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::copy(), gum::MultiDimContainer< GUM_SCALAR >::copy(), gum::SplayBinaryNode< Element >::copy_(), gum::SplayTree< Element >::copy_(), 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::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::DefaultJunctionTreeStrategy::createdClique(), gum::DefaultJunctionTreeStrategy::createdCliques(), gum::List< const gum::Potential< GUM_SCALAR > * >::crend(), gum::List< const gum::Potential< GUM_SCALAR > * >::crendSafe(), 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::SmallObjectAllocator::deallocate(), gum::FixedAllocator::deallocate(), gum::InternalNode::deallocateNodeSons(), gum::Instantiation::dec(), gum::Instantiation::decIn(), gum::Instantiation::decNotVar(), 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::DAGmodel::descendants(), gum::ArcGraphPart::descendants(), gum::Sequence< NodeId >::diffSet(), gum::DiGraph::DiGraph(), gum::DiGraphListener::DiGraphListener(), gum::IBayesNet< double >::dim(), gum::IMarkovNet< GUM_SCALAR >::dim(), gum::ArcGraphPart::directedPath(), gum::ArcGraphPart::directedUnorientedPath(), gum::Directory::Directory(), gum::Dirichlet::Dirichlet(), gum::ApproximationScheme::disableEpsilon(), gum::ApproximationScheme::disableMaxIter(), gum::ApproximationScheme::disableMaxTime(), gum::ApproximationScheme::disableMinEpsilonRate(), 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::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::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::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::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::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::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::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::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::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::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::Instantiation::eraseWithMaster(), gum::ErrorsContainer::Error(), gum::EssentialGraph::EssentialGraph(), 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::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::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::MultiDimBijArray< GUM_SCALAR >::fill(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::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::Potential< GUM_SCALAR >::fillWith(), gum::Potential< GUM_SCALAR >::findAll(), 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::GammaLog2::GammaLog2(), gum::GammaLog2::gammaLog2(), gum::MultiDimFunctionGraphGenerator::generate(), gum::SimpleBayesNetGenerator< GUM_SCALAR, ICPTGenerator >::generateBN(), gum::MCBayesNetGenerator< GUM_SCALAR, ICPTGenerator, ICPTDisturber >::generateBN(), gum::SimpleCPTGenerator< GUM_SCALAR >::generateCPT(), gum::BayesNet< double >::generateCPT(), gum::BayesNet< double >::generateCPTs(), gum::InfluenceDiagramGenerator< GUM_SCALAR >::generateID(), gum::SimpleUTGenerator::generateUT(), 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::MultiDimArray< GUM_SCALAR >::getByOffset(), gum::IndexedTree< Key, Data >::getData(), gum::AggregatorDecomposition< GUM_SCALAR >::getDecomposedAggregator(), gum::getDynamicThreadsNumber(), gum::SplayBinaryNode< Element >::getElement(), gum::SplayBinaryNode< Element >::getFd(), gum::SplayBinaryNode< Element >::getFg(), 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::GibbsBNdistance< GUM_SCALAR >::GibbsBNdistance(), 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::IMarkovNet< GUM_SCALAR >::IMarkovNet(), gum::IMDDI< AttributeSelection, isScalar >::IMDDI(), gum::Instantiation::inc(), gum::Instantiation::incIn(), gum::Instantiation::incNotVar(), gum::Instantiation::incOut(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::IncrementalGraphLearner(), gum::StatesCounter::incState(), gum::Instantiation::incVar(), gum::IndexedTree< Key, Data >::IndexedTree(), gum::InfluenceDiagramGenerator< GUM_SCALAR >::InfluenceDiagramGenerator(), gum::ApproximationScheme::initApproximationScheme(), gum::E_GreedyDecider::initialize(), gum::FMDPLearner< VariableAttributeSelection, RewardAttributeSelection, LearnerSelection >::initialize(), gum::AdaptiveRMaxPlaner::initialize(), gum::StructuredPlaner< double >::initialize(), gum::SDYNA::initialize(), 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::SplayTree< Element >::insert(), gum::Set< gum::Potential< GUM_SCALAR > * >::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::IncrementalGraphLearner< AttributeSelection, isScalar >::insertInternalNode_(), 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::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::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::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::PartialOrderedEliminationSequenceStrategy::isPartialOrderNeeded(), gum::PartialOrderedEliminationSequenceStrategy::isPartialOrderNeeded_(), gum::Set< gum::Potential< GUM_SCALAR > * >::isProperSubsetOf(), gum::Set< gum::Potential< GUM_SCALAR > * >::isProperSupersetOf(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::isReducedAndOrdered(), 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::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::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::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::MarkovBlanket::MarkovBlanket(), gum::MarkovNetInference< GUM_SCALAR >::MarkovNetInference(), 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::IBayesNet< double >::maxNonOneParam(), gum::IMarkovNet< GUM_SCALAR >::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::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::MultiDimNoisyORNet< GUM_SCALAR >::name(), gum::MultiDimNoisyORCompound< 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::MultiDimLogit< GUM_SCALAR >::newFactory(), gum::MultiDimNoisyORNet< GUM_SCALAR >::newFactory(), gum::MultiDimArray< 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::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::ApproximationSchemeListener::operator=(), gum::MultiDimDecorator< GUM_SCALAR >::operator=(), gum::ProgressListener::operator=(), gum::Potential< GUM_SCALAR >::operator=(), gum::Dirichlet::operator=(), gum::NodeGraphPartIterator::operator=(), gum::MultiDimBijArray< GUM_SCALAR >::operator=(), gum::IndexedTree< Key, Data >::operator=(), gum::DiGraphListener::operator=(), gum::UndiGraphListener::operator=(), gum::EdgeGraphPart::operator=(), gum::MultiDimContainer< GUM_SCALAR >::operator=(), gum::ArcGraphPart::operator=(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::operator=(), gum::MixedGraphListener::operator=(), gum::Instantiation::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::BijectionImplementation< Idx, const std::string *, std::allocator< const std::string * >, std::is_scalar< Idx >::value &&std::is_scalar< const std::string * >::value >::operator=(), gum::MixedGraph::operator=(), gum::ListBucket< const gum::Potential< GUM_SCALAR > *>::operator=(), gum::GraphicalModel::operator=(), gum::NodeGraphPartIteratorSafe::operator=(), gum::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::operator=(), gum::DAGCycleDetector::ArcDel::operator=(), gum::DAGmodel::operator=(), gum::MultiPriorityQueue< gum::LeafPair *, double, std::less< double > >::operator=(), gum::RefPtr< Val >::operator=(), gum::DAGCycleDetector::ArcReverse::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::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::ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >::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::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::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::ApproximationScheme::periodSize(), 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::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::populate(), gum::MultiDimBijArray< GUM_SCALAR >::populate(), gum::MultiDimDecorator< GUM_SCALAR >::populate(), gum::MultiDimContainer< 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::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::List< const gum::Potential< GUM_SCALAR > * >::push_front(), gum::SplayTree< Element >::pushBack(), gum::List< const gum::Potential< GUM_SCALAR > * >::pushBack(), gum::SplayTree< Element >::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::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::RefPtr< Val >::refCount(), 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::BayesBall::relevantPotentials(), gum::dSeparation::relevantPotentials(), gum::ApproximationScheme::remainingBurnIn(), gum::removeInfo(), gum::LeafAggregator::removeLeaf(), gum::IMDDI< AttributeSelection, isScalar >::removeNode_(), gum::ITI< AttributeSelection, isScalar >::removeNode_(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::removeNode_(), gum::FusionContext< true >::removePair(), gum::InternalNode::removeParent(), 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::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::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::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::LeastSquareTestPolicy< GUM_SCALAR >::score(), gum::GTestPolicy< 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::LeastSquareTestPolicy< GUM_SCALAR >::secondaryscore(), gum::GTestPolicy< 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::SequenceImplementation< gum::prm::PRMClassElement< double > *, std::allocator< gum::prm::PRMClassElement< double > *>, std::is_scalar< gum::prm::PRMClassElement< double > *>::value >::setAtPos(), 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::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::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::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::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::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::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::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::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::LeafAggregator::toString(), gum::Observation::toString(), gum::DiGraph::toString(), gum::EdgeGraphPart::toString(), gum::NodeDatabase< AttributeSelection, isScalar >::toString(), gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >::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::PriorityQueueImplementation< NodeId, double, std::greater< double >, std::allocator< NodeId >, std::is_scalar< NodeId >::value >::toString(), gum::NodeGraphPart::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::Potential< GUM_SCALAR >::translate(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::transpose_(), gum::TreeOperator< GUM_SCALAR, COMBINEOPERATOR, TerminalNodePolicy >::TreeOperator(), gum::TreeOperatorStrategy< GUM_SCALAR >::TreeOperatorStrategy(), 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::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::ApproximationScheme::updateApproximationScheme(), 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::updateLeaf(), gum::LeafPair::updateLikelyhood(), gum::IncrementalGraphLearner< AttributeSelection, isScalar >::updateNode_(), gum::IMDDI< AttributeSelection, isScalar >::updateNodeWithObservation_(), gum::ITI< AttributeSelection, isScalar >::updateNodeWithObservation_(), gum::FusionContext< true >::updatePair(), gum::VariableSelector::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::MultiDimDecorator< GUM_SCALAR >::variable(), gum::FMDPFactory< 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::ErrorsContainer::Warning(), gum::BayesNetFragment< GUM_SCALAR >::whenArcDeleted(), gum::BayesNetFragment< GUM_SCALAR >::whenNodeDeleted(), gum::NodeGraphPartIteratorSafe::whenNodeDeleted(), 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().

643  {
644  insert(std::move(Key(std::forward< Args >(args)...)));
645  }
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:606

◆ 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 700 of file set_tpl.h.

700  {
701  return _inside_.empty();
702  }
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:772
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 510 of file set_tpl.h.

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

◆ 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 295 of file set_tpl.h.

295  {
296  return *(reinterpret_cast< const SetIterator< Key >* >(SetIteratorStaticEnd::end4Statics()));
297  }
friend class SetIterator< Key >
Friends to speed up access.
Definition: set.h:765

◆ 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 483 of file set_tpl.h.

483  {
484  return *(
485  reinterpret_cast< const SetIteratorSafe< Key >* >(SetIteratorStaticEnd::_SetIterEndSafe_));
486  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:766

◆ 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 281 of file set_tpl.h.

281  {
282  return *(
283  reinterpret_cast< const SetIteratorSafe< Key >* >(SetIteratorStaticEnd::endSafe4Statics()));
284  }
friend class SetIteratorSafe< Key >
Friends to speed up access.
Definition: set.h:766

◆ 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 649 of file set_tpl.h.

649  {
650  // erase the element (if it exists)
651  _inside_.erase(k);
652 
653  // Note that actually there is no need to update the end iterator as this
654  // one
655  // is not affected by changes within hashtables (adding/deleting elements).
656  // Hence, for speedup, we do not update the end iterator
657  }
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:772

◆ 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 661 of file set_tpl.h.

661  {
662  // erase the element
663  _inside_.erase(iter._ht_iter_);
664 
665  // Note that actually there is no need to update the end iterator as this
666  // one
667  // is not affected by changes within hashtables (adding/deleting elements).
668  // Hence, for speedup, we do not update the end iterator
669  }
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:772

◆ 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 600 of file set_tpl.h.

600  {
601  return _inside_.exists(k);
602  }
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:772
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.

◆ 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 820 of file set_tpl.h.

821  {
822  // determine the proper size of the hashtable
823  // by default, the size of the table is set so that the table does not take
824  // too much space while allowing to add a few elements without resizing
825  if (size == 0) size = std::max(Size(2), _inside_.size() / 2);
826 
827  // create a new table
828  HashTable< Key, NewKey, NewAlloc > table(size);
829 
830  // fill the new hash table
832  ++iter) {
833  table.insert(iter.key(), f(iter.key()));
834  }
835 
836  return table;
837  }
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:772
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:694

◆ 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 842 of file set_tpl.h.

843  {
844  // determine the proper size of the hashtable
845  // by default, the size of the table is set so that the table does not take
846  // too much space while allowing to add a few elements without resizing
847  if (size == 0) size = std::max(Size(2), _inside_.size() / 2);
848 
849  // create a new table
850  HashTable< Key, NewKey, NewAlloc > table(size);
851 
852  // fill the new hash table
854  ++iter) {
855  table.insert(iter.key(), val);
856  }
857 
858  return table;
859  }
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:772
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:694

◆ 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 606 of file set_tpl.h.

606  {
607  // WARNING: we shall always test whether k already belongs to the set before
608  // trying to insert it because we set _inside_'s key uniqueness policy to
609  // false
610  if (!contains(k)) {
611  // insert the element
612  _inside_.insert(k, true);
613 
614  // Note that actually there is no need to update the end iterator as this
615  // one
616  // is not affected by changes within hashtables (adding/deleting
617  // elements).
618  // Hence, for speedup, we do not update the end iterator
619  }
620  }
bool contains(const Key &k) const
Indicates whether a given elements belong to the set.
Definition: set_tpl.h:558
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:772
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 624 of file set_tpl.h.

624  {
625  // WARNING: we shall always test whether k already belongs to the set before
626  // trying to insert it because we set _inside_'s key uniqueness policy to
627  // false
628  if (!contains(k)) {
629  // insert the element
630  _inside_.insert(std::move(k), true);
631 
632  // Note that actually there is no need to update the end iterator as this
633  // one
634  // is not affected by changes within hashtables (adding/deleting
635  // elements).
636  // Hence, for speedup, we do not update the end iterator
637  }
638  }
bool contains(const Key &k) const
Indicates whether a given elements belong to the set.
Definition: set_tpl.h:558
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:772
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 565 of file set_tpl.h.

565  {
566  if (this->size() >= s.size()) { return false; }
567 
568  for (const auto& elt: *this) {
569  if (!s.contains(elt)) { return false; }
570  }
571  return true;
572  }
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:694

◆ 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 576 of file set_tpl.h.

576  {
577  return s.isProperSubsetOf(*this);
578  }

◆ 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 583 of file set_tpl.h.

583  {
584  if (this->size() > s.size()) { return false; }
585 
586  for (const auto& elt: *this) {
587  if (!s.contains(elt)) { return false; }
588  }
589  return true;
590  }
Size size() const noexcept
Returns the number of elements in the set.
Definition: set_tpl.h:694

◆ 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 594 of file set_tpl.h.

594  {
595  return s.isSubsetOrEqual(*this);
596  }

◆ 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 864 of file set_tpl.h.

864  {
865  // create a new list
866  List< NewKey, NewAlloc > list;
867 
868  // fill the new list
870  ++iter) {
871  list.pushBack(f(iter.key()));
872  }
873 
874  return list;
875  }
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:772
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 464 of file set_tpl.h.

464  {
465  return !(operator==(s2));
466  }
bool operator==(const Set< Key, OtherAlloc > &s2) const
Mathematical equality between two sets.
Definition: set_tpl.h:446

◆ 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 707 of file set_tpl.h.

707  {
708  Set< Key, Alloc > res;
709  const HashTable< Key, bool, OtherAlloc >& h2 = s2._inside_;
710  HashTable< Key, bool, Alloc >& h_r = res._inside_;
711 
712  if (size() < h2.size()) {
714  ++iter) {
715  if (h2.exists(iter.key())) h_r.insert(iter.key(), true);
716  }
717  } else {
718  for (HashTableConstIterator< Key, bool > iter = h2.cbegin(); iter != h2.cend(); ++iter) {
719  if (_inside_.exists(iter.key())) h_r.insert(iter.key(), true);
720  }
721  }
722 
723  return res;
724  }
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:772
bool exists(const Key &key) const
Checks whether there exists an element with a given key in the hashtable.
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:694
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 730 of file set_tpl.h.

730  {
731  if (&s2 != this) {
732  const HashTable< Key, bool, OtherAlloc >& h2 = s2._inside_;
733  for (auto iter = _inside_.beginSafe(); iter != _inside_.endSafe(); ++iter) {
734  if (!h2.exists(iter.key())) _inside_.erase(iter);
735  }
736  }
737 
738  return *this;
739  }
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:772
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 759 of file set_tpl.h.

759  {
760  Set< Key, Alloc > res = *this;
761  const HashTable< Key, bool, OtherAlloc >& h2 = s2._inside_;
762  HashTable< Key, bool, Alloc >& h_r = res._inside_;
763 
764  for (HashTableConstIterator< Key, bool > iter = h2.cbegin(); iter != h2.cend(); ++iter) {
765  if (!h_r.exists(iter.key())) h_r.insert(iter.key(), true);
766  }
767 
768  return res;
769  }
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 745 of file set_tpl.h.

745  {
746  if (&s2 != this) {
747  for (auto pair: s2._inside_) {
748  if (!_inside_.exists(pair.first)) _inside_.insert(pair.first, true);
749  }
750  }
751 
752  return *this;
753  }
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:772
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 >
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 775 of file set_tpl.h.

775  {
776  Set< Key, Alloc > res;
777  const HashTable< Key, bool, OtherAlloc >& h2 = s2._inside_;
778  HashTable< Key, bool, Alloc >& h_r = res._inside_;
779 
781  ++iter)
782  if (!h2.exists(iter.key())) h_r.insert(iter.key(), true);
783 
784  return res;
785  }
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:772
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 680 of file set_tpl.h.

680  {
681  insert(std::move(k));
682  return *this;
683  }
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:606

◆ 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 673 of file set_tpl.h.

673  {
674  insert(k);
675  return *this;
676  }
void insert(const Key &k)
Inserts a new element into the set.
Definition: set_tpl.h:606

◆ 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 377 of file set_tpl.h.

377  {
378  // avoid self assignment
379  if (&s != this) {
380  // remove the old content of the set. Actually, we remove all the elements
381  // from the underlying hashtable. Note that, doing so, all the hashtable
382  // iterators will be updated as well. In turn, this will imply that,
383  // whenever
384  // an operation will be performed on a SetIteratorSafe, this will raise an
385  // exception.
386  clear();
387 
388  // prepare the set for its new data
389  resize(s.capacity());
390  setResizePolicy(s.resizePolicy());
391 
392  // copy the set
393  _inside_ = s._inside_;
394 
395  // Note that actually there is no need to update the end iterator as this
396  // one
397  // is not affected by changes within hashtables (adding/deleting
398  // elements).
399  // Hence, for speedup, we do not update the end iterator
400  }
401 
402  return *this;
403  }
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:772
void resize(Size new_capacity)
Changes the size of the underlying hash table containing the set.
Definition: set_tpl.h:529
void setResizePolicy(const bool new_policy)
Enables the user to change dynamically the resizing policy of the underlying hash table...
Definition: set_tpl.h:541
void clear()
Removes all the elements, if any, from the set.
Definition: set_tpl.h:361

◆ 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 408 of file set_tpl.h.

408  {
409  // avoid self assignment
410  if (this != reinterpret_cast< const Set< Key, Alloc >* >(&s)) {
411  // remove the old content of the set. Actually, we remove all the elements
412  // from the underlying hashtable. Note that, doing so, all the hashtable
413  // iterators will be updated as well. In turn, this will imply that,
414  // whenever
415  // an operation will be performed on a SetIteratorSafe, this will raise an
416  // exception.
417  clear();
418 
419  // prepare the set for its new data
420  resize(s.capacity());
421  setResizePolicy(s.resizePolicy());
422 
423  // copy the set
424  _inside_ = s._inside_;
425 
426  // Note that actually there is no need to update the end iterator as this
427  // one
428  // is not affected by changes within hashtables (adding/deleting
429  // elements).
430  // Hence, for speedup, we do not update the end iterator
431  }
432 
433  return *this;
434  }
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:772
void resize(Size new_capacity)
Changes the size of the underlying hash table containing the set.
Definition: set_tpl.h:529
void setResizePolicy(const bool new_policy)
Enables the user to change dynamically the resizing policy of the underlying hash table...
Definition: set_tpl.h:541
void clear()
Removes all the elements, if any, from the set.
Definition: set_tpl.h:361

◆ 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 438 of file set_tpl.h.

438  {
439  _inside_ = std::move(from._inside_);
440  return *this;
441  }
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:772

◆ 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 446 of file set_tpl.h.

446  {
447  const HashTable< Key, bool, OtherAlloc >& h2 = s2._inside_;
448 
449  // check whether both sets have the same number of elements
450  if (size() != h2.size()) return false;
451 
452  // check the content of the sets
454  ++iter) {
455  if (!h2.exists(iter.key())) return false;
456  }
457 
458  return true;
459  }
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:772
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:694

◆ 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 687 of file set_tpl.h.

687  {
688  erase(k);
689  return *this;
690  }
void erase(const Key &k)
Erases an element from the set.
Definition: set_tpl.h:649

◆ 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 529 of file set_tpl.h.

529  {
530  _inside_.resize(new_size);
531 
532  // Note that actually there is no need to update the end iterator as this
533  // one
534  // is not affected by changes within hashtables (adding/deleting elements).
535  // Hence, for speedup, we do not update the end iterator
536  }
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:772

◆ 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 552 of file set_tpl.h.

552  {
553  return _inside_.resizePolicy();
554  }
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:772

◆ 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 541 of file set_tpl.h.

541  {
542  _inside_.setResizePolicy(new_policy);
543 
544  // Note that actually there is no need to update the end iterator as this
545  // one
546  // is not affected by changes within hashtables (adding/deleting elements).
547  // Hence, for speedup, we do not update the end iterator
548  }
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:772

◆ 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 694 of file set_tpl.h.

694  {
695  return _inside_.size();
696  }
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:772

◆ 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 789 of file set_tpl.h.

789  {
790  std::stringstream out;
791  bool first = true;
792  out << "{";
793 
794  for (iterator iter = begin(); iter != end(); ++iter) {
795  if (first) {
796  out << *iter;
797  first = false;
798  } else {
799  out << "," << *iter;
800  }
801  }
802 
803  out << "}";
804 
805  std::string res;
806  out >> res;
807  return res;
808  }
const iterator & end() const noexcept
The usual unsafe end iterator to parse the set.
Definition: set_tpl.h:510
iterator begin() const
The usual unsafe begin iterator to parse the set.
Definition: set_tpl.h:498
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 768 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 765 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 766 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 772 of file set.h.


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