Range-v3 has ranges::views::drop
and ranges::views::drop_last
to remove elements from the front or the back of a view.
Does it offer a similar functions to prepend/append elements to a view?
For now, the shortest way I've found is to concat
the range/container with a iota
or with a single
:
#include <assert.h>
#include <range/v3/view/iota.hpp>
#include <range/v3/view/concat.hpp>
#include <range/v3/to_container.hpp>
using namespace ranges;
using namespace views;
int main() {
std::vector<int> v{1,2,3};
auto wi = concat(iota(0,1),v);
assert(((wi | to_vector) == std::vector<int>{0,1,2,3}));
auto ws = ranges::views::concat(single(0), v);
assert(((ws | to_vector) == std::vector<int>{0,1,2,3}));
}