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:
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 elstd::vector<sales_data> vec;
. Podemos utilizar un buclefor
basado en rangos para iterar sobre el vector y actualizar el objetoSales_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étodocombine
. No es necesario borrar y reemplazar el objeto, lo que puede ser más eficiente para vectores grandes.