forked from OctaForge/libostd
add slicing for finite random access ranges
This commit is contained in:
parent
cd0b6fc2fc
commit
dc2dacaf5d
|
@ -125,6 +125,11 @@ namespace octa {
|
|||
return p_range[length() - i - 1];
|
||||
}
|
||||
|
||||
ReverseRange<T> slice(size_t start, size_t end) {
|
||||
size_t len = p_range.length();
|
||||
return ReverseRange<T>(p_range.slice(len - end, len - start));
|
||||
}
|
||||
|
||||
private:
|
||||
T p_range;
|
||||
};
|
||||
|
@ -182,6 +187,10 @@ namespace octa {
|
|||
return move(p_range[i]);
|
||||
}
|
||||
|
||||
MoveRange<T> slice(size_t start, size_t end) {
|
||||
return MoveRange<T>(p_range.slice(start, end));
|
||||
}
|
||||
|
||||
private:
|
||||
T p_range;
|
||||
};
|
||||
|
|
|
@ -55,6 +55,10 @@ namespace octa {
|
|||
/* satisfy RandomAccessRange */
|
||||
size_t length() const { return p_end - p_beg; }
|
||||
|
||||
VectorRange slice(size_t start, size_t end) {
|
||||
return VectorRange(p_beg + start, p_beg + end);
|
||||
}
|
||||
|
||||
T &operator[](size_t i) { return p_beg[i]; }
|
||||
const T &operator[](size_t i) const { return p_beg[i]; }
|
||||
|
||||
|
|
Loading…
Reference in a new issue