stlab 2.3.0
Modern, modular C++ algorithms, data structures, and concurrency primitives
Loading...
Searching...
No Matches
reverse.hpp File Reference

Reverse algorithms for iterators and intrusive forward / bidirectional sequences. More...

#include <algorithm>
#include <utility>
#include <stlab/config.hpp>
#include <stlab/iterator/concepts.hpp>
#include <stlab/iterator/set_next.hpp>

Go to the source code of this file.

Functions

template<STLAB_CONCEPT(FORWARD_NODE_ITERATOR) I>
auto stlab::unsafe::reverse_append (I first, I last, I end) -> I
 Reverses the range [first, last) and appends end. Returns the beginning of the reversed range such that [result, end) is a valid range.
template<typename R, typename I>
auto stlab::unsafe::reverse_append (R &range, I end) -> I
 Reverses range and appends end. Returns the beginning of the reversed range such that [result, end) is a valid range.
template<typename I>
auto stlab::unsafe::reverse_nodes (I first, I last) -> I
 Reverses the range [first, last) and returns the beginning of the reversed range such that [result, last) is a valid range.
template<typename R>
auto stlab::unsafe::reverse_nodes (R &range) -> typename R::iterator
 Reverses the range range and returns the beginning of the reversed range such that [result, last) is a valid range.
template<class BidirectionalRange>
void stlab::reverse (BidirectionalRange &range)
 Range-based reverse, will be deprecated in C++20 in favor of std::ranges::reverse.
template<class BidirectionalRange, class OutputIterator>
void stlab::reverse_copy (BidirectionalRange &range, OutputIterator result)
 Range-based reverse_copy algorithm, will be deprecated in C++20 in favor of std::ranges::reverse_copy.
template<class BidirectionalRange, class OutputIterator>
void stlab::reverse_copy (const BidirectionalRange &range, OutputIterator result)
 Range-based reverse_copy algorithm, will be deprecated in C++20 in favor of std::ranges::reverse_copy.
template<typename I>
auto stlab::reverse_until (I f, I m, I l) -> std::pair< I, I >
 Reverses the range [f, l) until m is reached. Returns a range [a, b) of the un-reversed subrange such that either a == m or b == m.

Detailed Description

Reverse algorithms for iterators and intrusive forward / bidirectional sequences.

Algorithms for reversing node ranges and iterator sequences, including helpers that splice intrusive lists via stlab/iterator/set_next.hpp.