Container map-aiuto=

Ciao a tutti, volevo chiedervi se avevate tempo un aiuto sul container std::map

Io ho il seguente codice

#include<iostream>
#include<fstream>
#include<cstdlib>
#include<string.h>
#include<map>

using namespace std;

per le librerie
poi

map<int,int> mappa;
int main()
{

mappa[8]=4;
mappa[5]=1;    
mappa[6]=3;
mappa[9]=42;
mappa[1]=123;
mappa[3]=566;


return 0;
   cout<<mappa[6]<< '\n';

}

questo è il mio codice. Ora io sto provando a buttare elementi nella map, ma il problema è che non stampa niente. Ho provato anche altri metodi d’inserimento :
il map::insert(make_pair(int,int), e non mette dentro niente nella mappa o addirittura da errore
il map::at(chiave) = numero, che però da errore
ed anche per stamparli ho provato sia così, che con il map::at e anche con l’iteratore. Risultato, non stampa niente. E il bello è che su c++reference c’è il codice

int main ()
{
  std::map<char,std::string> mymap;

  mymap['a']="an element";
  mymap['b']="another element";
  mymap['c']=mymap['b'];

  std::cout << "mymap['a'] is " << mymap['a'] << '\n';
  std::cout << "mymap['b'] is " << mymap['b'] << '\n';
  std::cout << "mymap['c'] is " << mymap['c'] << '\n';
  std::cout << "mymap['d'] is " << mymap['d'] << '\n';

  std::cout << "mymap now contains " << mymap.size() << " elements.\n";

  return 0;
}

E questo va. Il problema è che bene o male il codice lo ho copiato da c++reference.
Qualcuno mi sa dire dove sbaglio? (Magari è solo il compilatore: su Win 7 con codeblocks non va, su ubuntu con codeblocks va MA su ubuntu non ho fatto girare questo, ne ho fatto girare uno in cui il map ha una chiave di tipo definito a parte ed in cui, magari influendo, tiravo in ballo anche OpenCV, quindi magari è tutta un’altra storia). Idee? Basta un operatore/funzione (uno, non di più) che funzioni per inserire elementi ed accedervi. Grazie mille in anticipo :smile:

Prova utilizzando push_back, ad esempio:

mappa[8].push_back(4);

La stampa penso sia corretta :smile:

Hai messo return 0; prima del cout.

Oddio è vero…grazie mille
Anche se in realtà il map::at da ancora l’eccezione ma fa lo stesso. Se interessa dice che map::at ha chiamato un istanza di std::out_of_range. Probabilmente per l’inserimento non va bene…comunque per ora fa lo stesso