11#ifndef PERMUTAHEDRAL_REPRESENTATION_COMBINATION_ITERATOR_H_
12#define PERMUTAHEDRAL_REPRESENTATION_COMBINATION_ITERATOR_H_
15#include <boost/range/iterator_range.hpp>
19namespace coxeter_triangulation {
28 :
public boost::iterator_facade<Combination_iterator, std::vector<uint> const, boost::forward_traversal_tag> {
29 typedef std::vector<uint> value_t;
32 friend class boost::iterator_core_access;
36 value_t
const& dereference()
const {
return value_; }
39 if (value_[0] == n_ - k_) {
44 if (value_[j] < n_ - 1) {
49 if (value_[j - 1] < n_ - k_ + j - 1) {
51 for (uint s = j; s < k_; s++) value_[s] = value_[j - 1] + s - (j - 1);
58 for (uint i = 0; i < k; ++i) value_[i] = i;
67 for (uint i = 0; i < n_; ++i) value_[i] = i;
Class that allows the user to generate combinations of k elements in a set of n elements....
Definition: Combination_iterator.h:28