36 #ifndef GUM_ARG_MAX_SET_H 37 #define GUM_ARG_MAX_SET_H 41 #include <agrum/tools/core/sequence.h> 42 #include <agrum/tools/core/smallobjectallocator/smallObjectAllocator.h> 56 template <
typename GUM_SCALAR_VAL,
typename GUM_SCALAR_SEQ >
72 ArgMaxSet(
const GUM_SCALAR_VAL& val,
const GUM_SCALAR_SEQ& elem);
79 ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >&
91 return SmallObjectAllocator::instance().allocate(s);
94 SmallObjectAllocator::instance().deallocate(
96 sizeof(ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >));
110 return argMaxSeq__->beginSafe();
117 return argMaxSeq__->endSafe();
130 ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >&
131 operator+=(
const GUM_SCALAR_SEQ& elem);
136 ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >&
142 const GUM_SCALAR_SEQ&
operator[](
const Idx i)
const {
143 return argMaxSeq__->atPos(i);
150 const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >& compared)
const;
152 const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >& compared)
const {
153 return !(*
this == compared);
160 const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >& compared)
const {
161 return val__ < compared.value() ?
true :
false;
164 const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >& compared)
const {
165 return compared < *
this;
168 const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >& compared)
const {
169 return !(*
this > compared);
172 const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >& compared)
const {
173 return !(*
this < compared);
181 Idx size()
const {
return argMaxSeq__->size(); }
188 bool exists(
const GUM_SCALAR_SEQ& elem)
const {
189 return argMaxSeq__->exists(elem);
199 streamy <<
"Value : " << objy.value()
200 <<
" - Set : " << objy.argMaxSeq__->toString();
207 #include <agrum/tools/core/argMaxSet_tpl.h> ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > & operator+=(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &src)
Use to insert the content of another set inside this one.
SequenceIteratorSafe< GUM_SCALAR_SEQ > endSafe() const
Iterator end.
ArgMaxSet(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &src)
Copy Constructor.
bool operator==(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &compared) const
Compares two ArgMaxSet to check if they are equals.
INLINE void emplace(Args &&... args)
void * operator new(size_t s)
Allocators and Deallocators redefinition.
Class to handle efficiently argMaxSet.
bool operator<(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &compared) const
Checks if val is lower or higher from the compared ArgMaxSet val.
bool operator<=(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &compared) const
Ajout d'un élément.
bool operator!=(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &compared) const
Ajout d'un élément.
bool operator>(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &compared) const
Ajout d'un élément.
friend std::ostream & operator<<(std::ostream &streamy, const ArgMaxSet &objy)
SequenceIteratorSafe< GUM_SCALAR_SEQ > beginSafe() const
Iterator beginning.
const GUM_SCALAR_VAL & value() const
Returns the value on which comparison are made.
bool exists(const GUM_SCALAR_SEQ &elem) const
ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > & operator+=(const GUM_SCALAR_SEQ &elem)
Ajout d'un élément.
void operator delete(void *p)
Constructor.
ArgMaxSet(const GUM_SCALAR_VAL &val, const GUM_SCALAR_SEQ &elem)
Constructor.
ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > & operator=(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &src)
Constructor.
Idx size() const
Gives the size.
bool operator>=(const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ > &compared) const
Ajout d'un élément.
const GUM_SCALAR_SEQ & operator[](const Idx i) const
Gives the ith element.
Sequence< GUM_SCALAR_SEQ > * argMaxSeq__
The very bone of the ArgMaxSet.