16 #ifndef UTIL_GRAPH_ITERATORS_H_
17 #define UTIL_GRAPH_ITERATORS_H_
37 template <
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_;
57 template <
typename Iterator>
61 template <
typename Iterator>
63 std::pair<Iterator, Iterator> begin_end) {
70 template <
typename MultiMap>
72 MultiMap& multi_map,
const typename MultiMap::key_type& key) {
75 template <
typename MultiMap>
77 const MultiMap& multi_map,
const typename MultiMap::key_type& key) {
85 template <
typename Container>
89 typename Container::const_reverse_iterator
begin()
const {
92 typename Container::const_reverse_iterator
end()
const {
return c_.rend(); }
97 template <
typename Container>
103 template <
typename IntegerType>
105 :
public std::iterator<std::input_iterator_tag, IntegerType> {
109 : index_(other.index_) {}
111 index_ = other.index_;
116 return index_ < other.index_;
119 return index_ == other.index_;
129 return previous_position;
145 template <
typename IntegerType>
159 explicit Iterator(
typename std::vector<T>::iterator it) : it_(it) {}
168 typename std::vector<T>::iterator it_;
174 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 & operator=(const IntegerRangeIterator &other)
IntegerRangeIterator(IntegerType value)
IntegerRangeIterator & operator++()
IntegerRangeIterator(const IntegerRangeIterator &other)
IntegerRangeIterator operator++(int)
bool operator!=(const IntegerRangeIterator &other) const
bool operator==(const IntegerRangeIterator &other) const
BeginEndReverseIteratorWrapper< Container > Reverse(const Container &c)
BeginEndWrapper< Iterator > BeginEndRange(Iterator begin, Iterator end)
BeginEndWrapper< typename MultiMap::iterator > EqualRange(MultiMap &multi_map, const typename MultiMap::key_type &key)
bool operator!=(const Iterator &other) const
Iterator(typename std::vector< T >::iterator it)
MutableVectorIteration(std::vector< T > *v)