PDA

View Full Version : [C++] Problema con lista


monelli
16-09-2008, 22:12
Ciao a tutti...

Sto iniziando a vedere la programmazione in c++ ma ho un grosso problema.

Tramite le librerie standad del c++ voglio creare una mappa.

Il campo chiave che è unico è una string
Il secondo campo è invece un'oggetto che creo così: data *bo = new data();

la mappa l'ho dichiarata così

map<string,data> struttura;
map<string,data>::iterator it;

Ed poi volevo utilizzare struttura.insert(lettura,bo);

Ma non c'è verso che funzioni ed gli errori che escono sono a me incomprensibili. Chi mi può aiutare? Grazie

robs05
17-09-2008, 07:56
#include <iostream>
using namespace std;
#include <string>
#include <map>

int main()
{
map<string,int> map_example;

map_example.insert(
map<string,int>::value_type( string("Ciao"),1 ));

//puoi anche definire typedef map<string,int>::value_type valType
//-----> map_example.insert( valType( string( "Ciao" ),1 ));

cout << map_example[ string("Ciao") ] << endl;

//ovviamente con più elementi c'è iterator



}

monelli
17-09-2008, 09:57
Innanzi tutto grazie per la risposta.

Il problema è che nell'esempio usi string e int e va bene
io invece volevo utilizzare string e bo dove bo è un oggetto di una classe data da me creata
si può fare e come?

robs05
17-09-2008, 10:42
guarda in c++ string è una classe quindi con string("Ciao") crei un oggetto di tipo sring e comunque alla fine sempre un oggetto è.

quindi se implementi tu una classe e gli passi l'oggetto creato dalla tua classe perchè non dovrebbe funzionare?

monelli
17-09-2008, 15:53
quindi se implementi tu una classe e gli passi l'oggetto creato dalla tua classe perchè non dovrebbe funzionare?

Perchè sbagliavo il modo di passarglielo... ti ringrazio ma adesso ci sono riuscito...

Ancora una cosa come faccio a trattare il carattere ( è ) quando lo leggo da un file e poi stamparlo a video correttamente???

robs05
17-09-2008, 17:27
non ti so dire io di abitualmete preferisco usare l'apice

es:
piu'
e'
onesta'

monelli
17-09-2008, 17:37
Perchè in pratica nella mappa metto una sequenza di parole e in automatica è ordinata in ordine alfabetico.

Il casino è che il carattere ( è ) mi compare in fondo e non dopo la ( e )

Esempio inserisco

e
dd
aa
è
z

ottengo

aa
dd
e
z
è

vorrei

aa
dd
e
è
z

Non c'è una soluzione semplice??? Mi devo sbattere ad ordinare a mano???