16#ifndef UTIL_GRAPH_ITERATORS_H_
17#define UTIL_GRAPH_ITERATORS_H_
37template <
typename Iterator>
41 using value_type =
typename std::iterator_traits<Iterator>::value_type;
44 Iterator
begin()
const {
return begin_; }
45 Iterator
end()
const {
return end_; }
50 const Iterator begin_;
57template <
typename Iterator>
61template <
typename Iterator>
63 std::pair<Iterator, Iterator> begin_end) {
70template <
typename MultiMap>
72 MultiMap& multi_map,
const typename MultiMap::key_type& key) {
75template <
typename MultiMap>
77 const MultiMap& multi_map,
const typename MultiMap::key_type& key) {
85template <
typename Container>
89 typename Container::const_reverse_iterator
begin()
const {
92 typename Container::const_reverse_iterator
end()
const {
return c_.rend(); }
97template <
typename Container>
103template <
typename IntegerType>
114 : index_(other.index_) {}
116 index_ = other.index_;
121 return index_ < other.index_;
124 return index_ == other.index_;
134 return previous_position;
150template <
typename IntegerType>
164 explicit Iterator(
typename std::vector<T>::iterator it) : it_(it) {}
173 typename std::vector<T>::iterator it_;
179 std::vector<T>*
const v_;
Container::const_reverse_iterator begin() const
BeginEndReverseIteratorWrapper(const Container &c)
Container::const_reverse_iterator end() const
typename std::iterator_traits< Iterator >::value_type value_type
BeginEndWrapper(Iterator begin, Iterator end)
IntegerRange(IntegerType begin, IntegerType end)
IntegerType operator*() const
IntegerRangeIterator(IntegerType value)
IntegerRangeIterator(const IntegerRangeIterator &other)
IntegerRangeIterator operator++(int)
IntegerRangeIterator & operator=(const IntegerRangeIterator &other)
bool operator!=(const IntegerRangeIterator &other) const
bool operator==(const IntegerRangeIterator &other) const
std::input_iterator_tag iterator_category
std::ptrdiff_t difference_type
IntegerRangeIterator & operator++()
BeginEndWrapper< typename MultiMap::iterator > EqualRange(MultiMap &multi_map, const typename MultiMap::key_type &key)
BeginEndReverseIteratorWrapper< Container > Reverse(const Container &c)
BeginEndWrapper< Iterator > BeginEndRange(Iterator begin, Iterator end)
bool operator!=(const Iterator &other) const
Iterator(typename std::vector< T >::iterator it)
MutableVectorIteration(std::vector< T > *v)