std::map<char[3], unsigned long> --> Angabe einer expliziten Initialisierung für Felder nicht moeglich
-
char* wollte ich ja gerade vermeinden.
Dann müsste ich mir ja alle Texte wieder mit new anlegen und mich selbst drum kümmern.
-
es geht nicht.
-
Nun gut, dann mache ich es mit std::string.
Danke für die schnellen Antworten.
-
typedef std::map<boost::array<char, 3>, unsigned long> CounterMap; CounterMap map; boost::array<char, 3> array = { 'a', 'b', 'c' }; map.insert(std::make_pair(array, 123));
-
Es ginge schon.
struct mychar{char a,b,c; char operator[](unsigned int index) { if(index < 1) return a; if(index >1 && index < 3)return c; if(index == 1)return b; throw std::exception("OUT OF BOUNDS"); } }; // oder struct mychar{int a; char operator[](unsigned int index) { if(index < 3) return ((char*)&a))[index]; throw std::exception("OUT OF BOUNDS"); } }; std::map<mychar,std::string> mymap;Ich würde aber Boost::array vorziehen

-
phlox81 schrieb:
Es ginge schon.
struct mychar{char a,b,c; char operator[](unsigned int index) { if(index < 1) return a; if(index >1 && index < 3)return c; if(index == 1)return b; throw std::exception("OUT OF BOUNDS"); } }; // oder struct mychar{int a; char operator[](unsigned int index) { if(index < 3) return ((char*)&a))[index]; throw std::exception("OUT OF BOUNDS"); } }; std::map<mychar,std::string> mymap;

-
FireFlow schrieb:
typedef std::map<boost::array<char, 3>, unsigned long> CounterMap; CounterMap map; boost::array<char, 3> array = { 'a', 'b', 'c' }; map.insert(std::make_pair(array, 123));Dazu noch eine kleine Frage:
Ist es sinnvoller
map["abc"] = 123;
oder
map.insert(std::make_pair("abc", 123));
zu schreiben.
-
Insert fügt nur ein Element ein wenn es noch keines mit dem Key gibt.
-
Das weiß ich.
Ist insert besser, wenn ich weiß, dass noch keines mit diesem Key drin ist?
-
Prüfen ob es den Key bereits gibt werden wohl insert und op[]. Insert muss es ja wissen um einzufügen und op[] um zu wissen ob er überschreiben muss oder nen neues Element einfügen muss.
Ich verwende op[], da er mir syntaktisch besser gefällt.
-
op[] hat den Nachteil das er einen Default-Konstruktor voraussetzt.