std::map element gesetzt
-
wie kann man nach prüfen ob eine elemant schon gesetzt wurde
z.b.class My{}; std::map<unsigned int,My> my_map; my_map[0] = My (); //element 1 gesetzt my_map[1] = My (); //element 2 gesetzt int i = 0; loop{ if (/*my_map[i] nicht gesetzt?*/){ my_map[i] = My (); break; } i++; }
-
... if (my_map.find(i) != my_map.end()){ ... }Aber Du kannst natürlich auch einfach setzen (per insert()) und anschließend prüfen, ob gesetzt wurde oder nicht (anhand des Returnwertes von insert()).
Gruß,
Simon2.
P.S.: Mit "break" würde ich da möglichst nicht arbeiten, das ist außerhalb von switch/case doch eher unüblich....
-
Du kannst es suchen

if(my_map.find(i)==my_map.end()) { //mach was }
-
cool thx , hab jetzt noch ne kleine fragen zur std::map
std::vector<int> x; x.push_back(10); x.push_back(50); x.push_back(25); x.push_back(11); for(int i = 0;i < x.size();i++) //mach was mit, x[i]wie kann ich das selbe mache also nach einander auf den inhalt der std::map zugreifen
-
Mit iteratoren
for( std::map<unsigned int,My>::iterator it = my_map.begin(); it!=my_map.end(); ++it) { // hier was mit it machen }
-
ok,thx
hab jetzt aber noch ein problemstruct Src_Rect{ int x; int y; int w; int h; }; std::map< unsigned int,std::vector<Src_Rect> > images; std::map< unsigned int,std::vector<Src_Rect> >::iterator it; for(it = images.begin(); it != images.end(); ++it){ for(int j = 0;j < it->size();j++) //hier z.b. size() //mach was (eine zeile) }wie kann nich auf die elemete oder funktionen vom std::vector zu greifen
meldung:
Fehler: »struct std::_Rb_tree_iterator<std::pair<const unsigned int, std::vector<Graphics::Src_Rect, std::allocatorGraphics::Src_Rect > > >« hat kein Element namens »size«
-
kiba91 schrieb:
wie kann nich auf die elemete oder funktionen vom std::vector zu greifen
meldung:
Fehler: »struct std::_Rb_tree_iterator<std::pair<const unsigned int, std::vector<Graphics::Src_Rect, std::allocatorGraphics::Src_Rect > > >« hat kein Element namens »size«typedef std::map<unsigned int, std::vector<Src_Rect> > mmap; mmap mymap; for(mmap::iterator it = mymap.begin(); it != mymap.end(); ++it) for(mmap::mapped_type::iterator j = it->second.begin(); j != it->second.end() ; ++j) ; // mache etwas mit jmit deinem mapiterator greifst du über it->second auf das gemappte Element (in dem Fall der std::vector) zu.
Hier habe ich mal ein Beispiel wie du dich durch die Map und für jedes Mapelement durch den vector durchiterierst ...