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 

problemas con map

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

Hola gente del foro, estoy realizando algunas modificaciones a un programa que ya hace un tiempo realice, estoy tratando de usar map, digo tratando porque me esta dando algunos problemas.
No puedo acceder al método first.
este error me genera:
Cita:
E2316 'first' is not a member of '_STL::_Rb_tree_iterator< ......'

los include que estoy usando
Código:
#include <vcl.h>
#include <map>

el código es:
Código:
std::map<String,String> m;
std::map<String,String>::iterator i;

m["España"] = "Madrid";
m["Portugal"] = "Lisboa";
m["Francia"] = "París";
//esto lo saque de un ej que da _Leo aqui en foro

for (i = m.begin() ; i != m.end() ; i++){
  ShowMessage(i.first);
}


este código se encuentra en una hoja de funciones que agrego al proyecto.
cualquier sugerencia sera bienvenida, estoy usando CB6, gracias.
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Cambia "i.first" por "i->first".

En el ejemplo también se muestra así:

https://cppbuilder.es/viewtopic.php?t=5383
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola _Leo gracias por responder, ahora si funciona.
Tengo algunas dudas y el asterisco? comió la vaca jaja luego busco información al respecto.
Te cuento estoy usando Qt y migrando todos mis programas por ej
Código:
QMap<QString, int>::iterator i = map.find("argentina");
 while (i != map.end() && i.key() == "argentina") {
     cout << i.value() << endl;
     ++i;
 }

aqui se accede a los métodos de i por valor.

Otro detalle cuando intento ver la lista generada por el auto completado en CB6 luego del i-> falla, sale un popup con el mensaje "Unable invoke Code Completion due to errors in source code", sin embargo "i->first" funciona Shocked.
gracias.
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

QMap es una clase propia de Qt, es diferente a la de la libreria estandar. Incluso en Qt si utilizas la libreria estandar es lo mismo:
Código:
    //Añadimos:  #include<map>  #include<QMessageBox>
   
    std::map<QString,QString> m;
    std::map<QString,QString>::iterator i;

    m["España"]   = "Madrid";
    m["Portugal"] = "Lisboa";
    m["Francia"]  = "París";

    for (i = m.begin(); i != m.end(); i++)
        QMessageBox::information(this, "prueba", i->first);


Tor escribió:
Otro detalle cuando intento ver la lista generada por el auto completado en CB6 luego del i-> falla

En las versiones viejas el autocompletado se lía un poco con las plantillas, esto funciona bastante mejor en las últimas versiones de C++Builder.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Mas claro imposible, gracias.
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
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.