2 #ifndef OPENGM_DISCRETE_SPACE_HXX
3 #define OPENGM_DISCRETE_SPACE_HXX
16 template<
class I = std::
size_t,
class L = std::
size_t>
18 :
public SpaceBase<DiscreteSpace<I, L>, I, L> {
25 template<
class Iterator>
void assign(Iterator, Iterator);
26 template<
class Iterator>
void assignDense(Iterator, Iterator);
33 std::vector<LabelType> numbersOfLabels_;
37 template<
class I,
class L>
40 : numbersOfLabels_() {
53 template<
class I,
class L>
54 template<
class Iterator>
61 : numbersOfLabels_(begin, end) {
63 OPENGM_ASSERT(std::numeric_limits<IndexType>::max()>numbersOfLabels_.size());
69 template<
class I,
class L>
70 template<
class Iterator>
77 numbersOfLabels_.assign(begin, end);
78 OPENGM_ASSERT(std::numeric_limits<IndexType>::max()>numbersOfLabels_.size());
82 template<
class I,
class L>
86 const I numberOfVariables
88 this->numbersOfLabels_.reserve(numberOfVariables);
91 template<
class I,
class L>
92 template<
class Iterator>
99 this->assign(begin, end);
103 template<
class I,
class L>
109 numbersOfLabels_.push_back(numberOfLabels);
110 OPENGM_ASSERT(std::numeric_limits<IndexType>::max()>numbersOfLabels_.size());
111 return numbersOfLabels_.size() - 1;
114 template<
class I,
class L>
118 return static_cast<IndexType>(numbersOfLabels_.size());
121 template<
class I,
class L>
128 return numbersOfLabels_[dimension];
133 #endif // #ifndef OPENGM_DISCRETE_SPACE_HXX
DiscreteSpace()
construct an empty label space (with zero variables)
Discrete space in which variables can have differently many labels.
#define OPENGM_ASSERT(expression)
IndexType addVariable(const LabelType)
add one more variable
IndexType numberOfVariables() const
Interface of label spaces.
void assign(Iterator, Iterator)
assign a new sequence of numbers of labels to an existing space
void reserve(const IndexType)
allocate memory for a fixed number of variables
LabelType numberOfLabels(const IndexType) const
void assignDense(Iterator, Iterator)