es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Escribir en un objeto Sales_data existente en std::vector provoca un fallo en el programa (C++)

Estoy leyendo y haciendo los ejercicios en C++ Primer Ed.5 de Stanley Lippman.

Tengo el siguiente problema con mi código: cuando actualizo un objeto Sales_data existente en el std::vector<Sales_data> vec;, el programa se bloquea.

Para solucionar esto, borro el objeto Sales_data existente y lo reemplazo con un nuevo objeto actualizado.

¿Existe una manera más eficiente de hacer esto sin borrar el objeto Sales_data y luego reemplazarlo?

Mi código:

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en c++, c++11, vector y containers, hay una forma más eficiente de actualizar un objeto existente Sales_data en el std::vector<sales_data> vec;. Podemos utilizar un bucle for basado en rangos para iterar sobre el vector y actualizar el objeto Sales_data directamente, sin borrarlo y reemplazarlo. Aquí hay un ejemplo:

    c++
    for (auto& sales_data : vec) {
    if (sales_data.isbn() == book.isbn()) {
    sales_data.combine(book);
    // no es necesario borrar y reemplazar
    }
    }

    De esta manera, accedemos directamente al objeto Sales_data utilizando una referencia y lo modificamos con el método combine. No es necesario borrar y reemplazar el objeto, lo que puede ser más eficiente para vectores grandes.

Comments are closed.