28 #ifndef GUM_MULTI_DIM_ARRAY_H 29 #define GUM_MULTI_DIM_ARRAY_H 31 #include <agrum/agrum.h> 32 #include <agrum/tools/multidim/implementations/multiDimWithOffset.h> 37 template <
typename GUM_SCALAR >
52 template <
typename GUM_SCALAR >
55 template <
typename GUM_SCALARBIS >
108 virtual void copyFrom(
const MultiDimContainer< GUM_SCALAR >& src)
const;
114 virtual void apply(std::function< GUM_SCALAR(GUM_SCALAR) > f)
const;
121 virtual GUM_SCALAR
reduce(std::function< GUM_SCALAR(GUM_SCALAR, GUM_SCALAR) > f,
122 GUM_SCALAR base)
const;
127 virtual void add(
const DiscreteVariable& v);
132 virtual void erase(
const DiscreteVariable& v);
142 virtual void fill(
const GUM_SCALAR& d)
const;
175 const GUM_SCALAR&
unsafeGet(Idx offset)
const;
216 void unsafeSet(Idx offset,
const GUM_SCALAR& val);
235 void setByOffset(Idx offset,
const GUM_SCALAR& val);
248 virtual GUM_SCALAR&
get_(
const Instantiation& i)
const;
250 virtual void replace_(
const DiscreteVariable* x,
const DiscreteVariable* y);
254 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 261 #include <agrum/tools/multidim/implementations/multiDimArray_tpl.h> virtual Size realSize() const
Returns the real size of this MultiDimArray.
virtual void erase(const DiscreteVariable &v)
Removes a variable.
INLINE void emplace(Args &&... args)
virtual void replace_(const DiscreteVariable *x, const DiscreteVariable *y)
Replace variable x by y.
virtual void copyFrom(const MultiDimContainer< GUM_SCALAR > &src) const
Copy from a other MultiDimContainer.
virtual void apply(std::function< GUM_SCALAR(GUM_SCALAR) > f) const
Apply a function on every element of the container.
void unsafeSet(Idx offset, const GUM_SCALAR &val)
Modifies the element stored in the multidimArray at a given offset.
virtual GUM_SCALAR & get_(const Instantiation &i) const
Return a data, given a Instantiation.
virtual ~MultiDimArray()
Copy operator.
virtual void commitMultipleChanges_(const GUM_SCALAR &)
Synchronize content after MultipleChanges.
void setByOffset(Idx offset, const GUM_SCALAR &val)
Modifies the element stored in the multidimArray at a given offset.
std::vector< GUM_SCALAR > values_
The true data : the values is mutable since we can change the value / in a const multiDimArray.
virtual GUM_SCALAR reduce(std::function< GUM_SCALAR(GUM_SCALAR, GUM_SCALAR) > f, GUM_SCALAR base) const
compute lfold for this container
virtual void commitMultipleChanges_()
Synchronize content after MultipleChanges.
virtual void fill(const GUM_SCALAR &d) const
Fills the MultiDimArray with the given value.
Multidimensional matrix stored as an array in memory.
virtual MultiDimContainer< GUM_SCALAR > * newFactory() const
Default constructor.
virtual const std::string & name() const
Returns the MultiDimArray name.
const GUM_SCALAR & getByOffset(Idx offset) const
Returns the element stored in the multidimArray at a given offset.
friend class MultiDimBijArray
MultiDimArray()
Default constructor.
const GUM_SCALAR & unsafeGet(Idx offset) const
Returns the element stored in the multidimArray at a given offset.
virtual void add(const DiscreteVariable &v)
Adds a variable.
MultiDimArray(const MultiDimArray< GUM_SCALAR > &src)
Copy constructor.