Valores de vector acumulados utilizando parcial_sum

Supongamos que el vector que tengo es <1, 2, 3>, quiero obtener el vector de valores acumulados <1, 3, 6>. Supongo que la función de C++ parcial_sum hace eso. Pero esta función no funciona cuando ejecuto (error del programa). ¿Es parcial_sum usado correctamente?

vector<float> vv, vvSum;
vv.push_back(1); vv.push_back(2); vv.push_back(3);

partial_sum(vv.begin(), vv.end(), vvSum.begin(), plus<float>());

for(unsigned int i = 0; i < vvSum.size(); ++i)
{
    cout << vv[i] << " " << endl;
}

preguntado el 12 de junio de 12 a las 16:06

1 Respuestas

NO, partial_sum se está utilizando incorrectamente.

La vvSum el vector está vacío. En esa situación, vvSum.begin() es un iterador final y, por lo tanto, no se puede utilizar para la salida.

Puedes llamar vvSum.resize(vv.size()); para que tenga el mismo tamaño que el original, o utilice un std::back_inserter(vvSum) iterador, que aumenta el tamaño del contenedor según sea necesario.

Respondido el 12 de junio de 12 a las 16:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.