c ++ Expresión: vector iterador + offset fuera de rango

Hoy código de escritura se encontró con este problema

void nextPermutation(vector<int>& nums) {
		int start = bigFlow(nums);
		sort(nums.begin() + start + 1, nums.end());  //报错行
	}

Esta función se da iterador límites Además, debido a mi bigFlow()función devuelve un valor entre -1 ~ n, por lo iterador intervalo debe estar entre 1-n. Esta afirmación es un error del compilador para calcular el numss.begin()+starttiempo si start=-1es así, evidentemente, ha sido iterador transfronteriza, en ausencia de cálculo +1antes de que el compilador informará de un error.
Corrección: soportes nums.begin()+(start+1), o ajustar el orden de adiciónnums.begin()+1+start

Publicado 16 artículos originales · ganado elogios 10 · vistas 4919

Supongo que te gusta

Origin blog.csdn.net/weixin_44826484/article/details/104649064
Recomendado
Clasificación