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 >&
90 void*
operator new(size_t s) {
return SmallObjectAllocator::instance().allocate(s); }
92 SmallObjectAllocator::instance().deallocate(
94 sizeof(ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >));
124 ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >&
operator+=(
const GUM_SCALAR_SEQ& elem);
129 ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >&
135 const GUM_SCALAR_SEQ&
operator[](
const Idx i)
const {
return _argMaxSeq_->atPos(i); }
140 bool operator==(
const ArgMaxSet< GUM_SCALAR_VAL, GUM_SCALAR_SEQ >& compared)
const;
142 return !(*
this == compared);
149 return _val_ < compared.value() ?
true :
false;
152 return compared < *
this;
155 return !(*
this > compared);
158 return !(*
this < compared);
166 Idx size()
const {
return _argMaxSeq_->size(); }
173 bool exists(
const GUM_SCALAR_SEQ& elem)
const {
return _argMaxSeq_->exists(elem); }
182 streamy <<
"Value : " << objy.value() <<
" - Set : " << objy._argMaxSeq_->toString();
189 #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.
Sequence< GUM_SCALAR_SEQ > * _argMaxSeq_
The very bone of the ArgMaxSet.
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.