El vector n_
vTimesStepReduction lo actualizas en el primer bucle, cuyo rango es:
Código C:
Ver originalfor(size_t i=0; i<m_vChoralList.size() - 1; ++i)
Es decir, si
m_vChoralList tiene 10 elementos,
i<size-1 = i<10-1 = i<9. En conclusión, este bucle irá de 0 a 8, insertando 9 elementos en el vector antes mencionado... como ves has perdido un elemento.
Y lo mismo te sucede en el segudo bucle principal.
Por otro lado, dado que el algoritmo que usas es el mismo, yo me plantearía moverlo a una función independiente para reutilizar código... suele ser una buena idea.
Un saludo