#include <iostream>
#include <list>

using namespace std;

void rev(list<int>& l, int pb, int pe)
{
    list<int> tmp;
    auto b = l.begin();
    tmp.splice(tmp.end(),l,next(b,pb),next(b,pe+1));
    tmp.reverse();
    l.splice(next(b,pb),tmp);
}

int main(int argc, char * argv[])
{
    list<int> l = {0,1,2,3,4,5,6,7,8,9};

    for(auto i: l) cout << i << "  "; cout << endl;
    rev(l,4,6);
    for(auto i: l) cout << i << "  "; cout << endl;

}

