Can this double loop be rewritten using ranges views split() ?
#include <vector>
#include <span>
struct MyPair
{
int a;
char b;
};
vector<MyPair> path = {{1,'a'},{1,'z'},{2,'b'},{2,'y'}};
vector<span<MyPair> > spans;
for (int i=0; i < path.size();)
{
auto r = path | ranges::views::drop(i) | views::take_while([&](const MyPair& p){return p.a == path[i].a;});
int size = ranges::distance(r);
span<Range> ranges(&path[i], size);
spans.push_back(ranges);
i += size ;
}
I want a view of views looking like
{{{1,'a'},{1,'z'}},{{2,'b'},{2,'y'}}}