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.

Añadir datos dentro de unordered_map dentro de una clase.

Tengo una clase Citydata, definida en un archivo .hh

struct City_details {
   string name;
   int taxrate;
};

class Citydata {
public:
   bool add_data(string id, string name, int taxrate)
   //otras funciones miembro...
private:
   unordered_map<id, City_details> info_map;

Tengo problemas para implementar la función add_data en el archivo .cc. Aquí está mi intento.

bool Citydata::add_data(string id, string name, int taxes) {
   if ( info_map.find(id) == info_map.end()) {
       City_details dataload;
       dataload.name = name;
       dataload.taxrate = taxes;
       info_map[id] = dataload;
       return true;
   }
   else return false;
}

Cuando lo pruebo, no veo que se agregue ningún dato de la manera que quiero. En cambio, veo una entrada completamente vacía (valores vacíos por defecto) y una entrada con la identificación correcta (la clave) pero sin datos añadidos a los parámetros. Cada vez que llamo a add_data, crea un par similar de un miembro de clave-dato completamente vacío, luego uno con la identificación correcta y de lo contrario datos vacíos.

El programa original es mucho más largo que esto, por lo que el problema también podría persistir allí, pero me pregunto si mi enfoque está mal diseñado.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un error de escritura en la definición de unordered_map. Los argumentos de plantilla deben estar dentro de corchetes angulares < y >. Por lo tanto, la definición correcta debería ser:

    unordered_map<string, city_details=””> info_map;

    En tu función add_data, la lógica parece correcta. Verifica si el id ya existe en el unordered_map y, si no, crea un nuevo objeto City_details y lo agrega al mapa usando el id como clave.

    Para depurar el problema, puedes intentar imprimir el contenido de info_map después de cada llamada a add_data. Esto puede ayudar a identificar si el problema se encuentra en la función en sí o en otras partes del programa.

    También asegúrate de llamar a la función add_data con los parámetros adecuados. Verifica si los valores de id, nombre e impuestos se están pasando correctamente.

    En general, el enfoque parece estar bien, y el problema podría ser un error de escritura o un problema con otras partes del programa.</string,>

Comments are closed.