Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

map

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: map Responder citando

Hola,

me podeis mostrar un ejemplo de uso de map?? como insertar, buscar un elemento por clave,... Con el ejemplo de la ayuda no me aclaro mucho.

Gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

A ver si te sirve esto, sino da más detalles e intentare ayudarte en lo que pueda:

    #include <map>

    // Declaramos el map con clave y valor de tipo AnsiString
    std::map<String, String> mapPaises;

    // Insertamos datos: Pais-Capital
    mapPaises["España"] = "Madrid";
    mapPaises["Portugal"] = "Lisboa";
    mapPaises["Francia"] = "París";
    mapPaises["Alemania"] = "Berlín";
    mapPaises["Italia"] = "Roma";

    // Declaramos el iterador
    std::map<String, String>::iterator ite;

    // Buscamos una clave
    ite = mapPaises.find("España");

    // Si existe mostramos su valor
    if (ite != mapPaises.end())
            ShowMessage(ite->second);
    else
            ShowMessage("No encontrado");


Otros detalles que pueden serte útiles:

    // Vaciamos el map
    mapPaises.clear();

    // Puedes comprobar si el map esta vacio
    bool EstaVacio = mapPaises.empty();

    // La cantidad de elementos
    int NumElementos = mapPaises.size();

    // Mostramos el valor de una clave dada
    // En este caso si no existe devuelve "" y añade la clave a la lista
    String Capital = mapPaises["España"];

    // Rellenamos un TMemo (Memo1) con todas las claves y sus valores
    // Ya hemos declarado 'ite' mas arriba
    for (ite = mapPaises.begin(); ite != mapPaises.end(); ite++)
            Memo1->Lines->Add(ite->first + " = " + ite->second);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias leo, me resultó muy útil tu respuesta. Una última pregunta sobre esto: ¿por qué no puedo crear un map utilizando tipos declarados dentro de la misma función? Por ejemplo:

Código:

enum TDia{domingo,lunes,martes};
std::map<TDia,int> mapa;


eso me da error (no puede generar especialización de plantilla...¿?). En cambio si pongo el enum como variable global si va Question
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Tiene que ser global o miembro de la clase, no puede ser local.

Te pongo el mensaje de error que da el Visual C++, que es bastante mas claro:

    [Error del compilador C2926]

    'tipo' : los tipos sin vinculación no se pueden utilizar como argumentos de plantilla

    No se puede generar una clase de plantilla (una clase creada a partir de una
    plantilla de clase) basándose en un tipo local. Los tipos usados para crear
    instancias de plantillas deben tener vinculación externa.

    Ejemplo:

        // C2926.cpp
        template<class T> class X{};

        void f()
        {
                struct Y{};

                X<Y> x; // C2926
        }

        int main()
        {
        }
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.