I want to shift elements inside container on any positions to the left or right. The shifting elements are not contiguous.

e.g I have a vector {1,2,3,4,5,6,7,8} and I want to shift {4,5,7} to the left on 2 positions, the expected result will be {1,4,5,2,7,3,6,8}

Is there an elegant way to solve it ?