next_permutation C++

Z

Tengo que ordenar con la función ordenación_rapida(quick sort) implementada por mi ,lo tengo que hacer sobre todas las permutaciones de un vector de n elementos ,siendo n el valor de la variable i,el problema es que cuando ejecuto la función de ordenación dentro del do while se queda en un bucle infinito en el vector de dos elementos 0,1 , en resumen todo funciona por separado pero al juntarlo ...bucle infinito y no tengo ni idea de porque

int main(){
	for(int i=0;i<=3;i++){ //este bucle es para el numero de elementos del vector
		vector<double> v;
		for(int j=0;j<=i;j++){
			v.push_back(j);
		}
		do{
			ordenacion_rapida(v.begin(),--v.end(),4);//esta funcion fuera del do while funciona
			for (std::vector<double>::iterator it = v.begin() ; it != v.end(); ++it)// este bucle es solo para ver los vectores
				std::cout << ' ' << *it;
			cout<<" "<<endl;
		}while(next_permutation(v.begin(),v.end()));
		
}

}

Usuarios habituales