23 #ifndef ITERABLE_H_INCLUDED 24 #define ITERABLE_H_INCLUDED 33 template<
typename Value_Type,
class Containor = std::vector<Value_Type>>
36 typedef typename Containor::const_iterator c_iter;
37 typedef typename Containor::const_reverse_iterator c_riter;
41 const Containor& iterable;
43 const size_t custom_begin;
44 const size_t custom_end;
49 :iterable(t_iterable),
51 custom_end(t_iterable.size())
59 :iterable(t_iterable),
63 if (not (0 <= b and b <= e and e <= iterable.size()))
64 CallHEPError(mty::error::TypeError,
65 "Wrong positions in construction of custom_iterable_view()." 66 + toString(b) +
" and " + toString(e) +
" for a containor " 67 +
"of size " + toString(iterable.size()));
71 return end() == begin();
75 return distance(begin(), end());
78 c_iter begin()
const {
79 return iterable.begin() + custom_begin;
83 return iterable.begin() + custom_end;
86 c_riter rbegin()
const {
87 return iterable.rbegin() + iterable.size() - custom_end;
90 c_riter rend()
const {
91 return iterable.rend() - custom_begin;
94 Value_Type operator[](
size_t i)
const {
95 return iterable[custom_begin + i];
Definition: iterable.h:34
Namespace of MARTY.
Definition: 2HDM.h:31