28 template<
class Itr,
class T>
29 std::optional<std::pair<Itr, Itr>>
find_enclosing(Itr first, Itr last,
const T& v){
34 for(; itr_high != last; (void)++itr_low, (
void)++itr_high){
35 if(*itr_low <= v && v <= *itr_high){
36 std::pair<Itr, Itr> result(itr_low, itr_high);
51 template<
class T,
int Size = Eigen::Dynamic>
52 std::optional<std::pair<const T*, const T*>>
find_enclosing(
const Eigen::Vector<T, Size>& range,
const T& v){
53 const T* first = range.data();
54 const T* last = range.data() + range.size();
67 template<
class Iterator,
class T>
68 void shift_up(Iterator first, Iterator last,
const T& v0 = T(0)){
70 Iterator itr_to = last;
74 Iterator itr_from = last;
77 while(itr_to != first){
78 *itr_to = std::move(*itr_from);
95 template<
class Iterator,
class T>
96 void shift_up(Iterator first, Iterator last, T&& v0 = T(0)){
98 Iterator itr_to = last;
102 Iterator itr_from = last;
106 while(itr_to != first){
107 *itr_to = std::move(*itr_from);
113 *first = std::move(v0);
The main namespace for the Control++ library.
Definition Bode.cpp:3
void shift_up(Iterator first, Iterator last, const T &v0=T(0))
Shifts the values in a range up by one position and inserts a new value (copy operation) at the begin...
Definition algorithm.hpp:68
std::optional< std::pair< Itr, Itr > > find_enclosing(Itr first, Itr last, const T &v)
Finds elements in a range that enclose v.
Definition algorithm.hpp:29