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()+start
tiempo si start=-1
es así, evidentemente, ha sido iterador transfronteriza, en ausencia de cálculo +1
antes 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