Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - come accedere a una map  di map
Forum - C/C++ - come accedere a una map di map

Avatar
frank87 (Normal User)
Newbie


Messaggi: 20
Iscritto: 10/03/2011

Segnala al moderatore
Postato alle 22:26
Lunedì, 14/03/2011
Ciao,
volevo sapere se qualcuno sa come accedere a una map interna ad un altra map.
In pratica ho una struttura tipo:
map<int, map<int,string> > Mappa;
Se dichiaro un iteratore tipo:

map<int, map<int,string> > ::iterator it;  

riesco a visualizzare l'elemento int della mappa piu esterna,ma non riesco a visualizzare gli elementi della mappa piu interna.
Come posso fare???
grazie in anticipo:k:


io faccio cosi ma da errore:

#include <map>
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int main()
{
map< int ,map<int,string> > m;
map<int,string> d;
d[1]="ciao";
d[2]="sono";
d[4]="io";
m[1]=d;

map< int ,map<int,string> > ::iterator it;

map<int,string>::iterator ciao;
it=m.begin();
ciao=it->second->begin();  //MI DA ERRORE QUI

    return 0;
}

L'errore che  mi mostra eclipse é:
../src/francesco.cpp:30: error: base operand of ‘->’ has non-pointer type ‘std::map<int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<int>, std::allocator<std::pair<const int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >’
make: *** [src/francesco.o] Errore 1

Non riesco a capire bene dove sbaglio.....





Ultima modifica effettuata da frank87 il 15/03/2011 alle 16:01
PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 12:54
Martedì, 15/03/2011
non esiste "mi da errore".

Il compilatore ti avrà certamente detto per filo e per segno tutto quello che serve per correggere l'errore, quindi riporta esattamente l'output del compilatore, altrimenti non andiamo da nessuna parte!

ho aggiunto l'errore che mi restituisce il compilatore,ma non capisco cosa corregere - frank87 - 15/03/11 16:02
invece di it->second->begin() metti it->second.begin().... la prossima volta comunque cerca di sforzarti a comprendere i messaggi del compilatore ;) - TheKaneB - 16/03/11 13:58
PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 0:07
Martedì, 15/03/2011
banalmente map<int, string>::iterator ciao;

it = mappa.begin();
ciao = it->second->begin();


ciao ;)

ancora non mi funziona,mi da errore sull'iterarore "ciao" - frank87 - 15/03/11 08:27
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 12:17
Martedì, 15/03/2011
come al solito ci vuole la sfera di cristallo...

Ultima modifica effettuata da HeDo il 15/03/2011 alle 13:04
PM