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>
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;
145template <
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(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
IntegerRangeIterator & operator++()
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)
std::optional< int64_t > end
bool operator!=(const Iterator &other) const
Iterator(typename std::vector< T >::iterator it)
MutableVectorIteration(std::vector< T > *v)