18#ifndef MOTIV_RANGE_HPP
19#define MOTIV_RANGE_HPP
21#include "src/models/communication/CollectiveCommunicationEvent.hpp"
22#include "src/models/communication/Communication.hpp"
42 using It =
typename std::vector<T>::iterator;
63 vec_ =
new std::vector<T>(*rhs.vec_);
64 begin_ = std::find(vec_->begin(), vec_->end(), *rhs.begin_);
65 end_ = std::find(vec_->begin(), vec_->end(), *rhs.end_);
78 explicit Range(std::vector<T> &vec) : vec_(new std::vector<T>(vec)), begin_(vec_->
begin()), end_(vec_->
end()) {};
98 vec_ =
new std::vector<T>(*rhs.vec_);
99 begin_ = std::find(vec_->begin(), vec_->end(), *rhs.begin_);
100 end_ = std::find(vec_->begin(), vec_->end(), *rhs.end_);
127 [[nodiscard]]
bool empty()
const {
return begin_ == end_; };
134 std::vector<T> *vec_ =
nullptr;
A custom range implementation around std::vector<T>s.
Range< T > & operator=(const Range< T > &rhs)
Copy assignment constructor.
Range(std::vector< T > &vec)
Range()=default
Creates an empty range.
Range(It begin, It end)
Creates a Range defined by two iterators.
typename std::vector< T >::iterator It
Shortcut for the iterator.
Range(const Range &rhs)
Constructs a new Range object from a given Range object.