vector subscript out of range c++ openGL

i am writing a code to get the bezier surface,
It is all working fine and i get the surface finally, but when I try to increase the subdivisions for for the surface, i get this error: “Vector subscript out of range” i tried to fix it in many ways but it didn’t work, although increasing and decreasing the subdivisions for the U curves is working only before drawing the v curves and the quads.

the error appears in this line:

ctrl_points_v[i].push_back(bezier_curve_points_u[x][i]);  

in the following function:

void makeVcurve()
{
ctrl_points_v.resize(subdivision + 1);
bezier_curve_points_v.resize(subdivision + 1);
if (v_curves)
{

	if ((ctrl_points_u[1].size() >= 2) && (ctrl_points_u[0].size() >= 2))
	{
		for (int i = 0; i < subdivision + 1; i++)
		{
			ctrl_points_v[i].clear();

			for (int x = 0; x < total_curves; x++) //count of the total uCurves
			{
				
				if (bezier_curve_points_u[x].size() > 0)
ctrl_points_v[i].push_back(bezier_curve_points_u[x][i]);
			}
		}
	}
	for (int i = 0; i < subdivision + 1;i++)
	{
		if (ctrl_points_v[i].size()>=2)
		{
			bezier_curve_points_v[i].clear();
			bezier_curve_points_v[i] = BezierCurve(ctrl_points_v[i], subdivision);
		}
	}
}
glutPostRedisplay();

}