Was bedeutet typedef std::map...
-
Hallo,
bin hier über ein Stück Code gestolpert:
typedef std::map<std::string,std::string> MessageMap;Was bedeutet denn das? Habe ich so noch nie gesehen...
-
Gast343 schrieb:
typedef std::map<std::string,std::string> MessageMap;Was bedeutet denn das? Habe ich so noch nie gesehen...
Das Bedeutet das der Datentyp std::mapstd::string,std::string nun auch unter dem Namen MessageMap angesprochen werden kann. Man könnte sagen ein typedef ist die Vergabe von Aliasnamen für Datentypen.
-
Gast343 schrieb:
Was bedeutet denn das?
- dass der Programmier zu faul zum tippen ist
- dass er keine Snippets anlegen kann
- dass er die Leute, die seinen Code verwenden, gerne suchen lässt was er mit MessageMap meint
-
zwutz schrieb:
Gast343 schrieb:
Was bedeutet denn das?
- dass der Programmier zu faul zum tippen ist
- dass er keine Snippets anlegen kann
- dass er die Leute, die seinen Code verwenden, gerne suchen lässt was er mit MessageMap meintetwas sehr einseitig...
gibt noch viele andere durchaus positive Gründe für typedefs:
- in templates, beispielsweise value_type in sämtlichen std::Containern
- Wartbarkeit: wenn MessageMap bei mir irgendwann besser eine std::map<int,std::string> ist, muss ich den typedef ändern und nicht den ganzen Code durchsuchen inclusive iteratoren usw. (mal abgesehn davon dass ich einzelne strings in ints ändern muss)
- Übersichtlichkeit -> Wartbarkeit und Lesbarkeit: Code muss für den Menschen lesbar sein, der Maschine ists egal. Wenn da an zig Stellen ein std::mapstd::string,std::string oder noch kompliziertere Bezeichner stehen, dann fördert ein typedef mit einem knappen, klaren Namen die Lesbarkeit ungemein.
-
zwutz schrieb:
Gast343 schrieb:
Was bedeutet denn das?
- dass er keine Snippets anlegen kann
- dass er die Leute, die seinen Code verwenden, gerne suchen lässt was er mit MessageMap meintJa ja, wenn man vielleicht mit Notepad arbeitet. Aber ich gehe nicht davon aus, was jemand aus C64-Zeiten arbeitet. In einer IDE sagt mir diese was MessageMap für ein typedef ist, und gut ist. Außerdem sagt MessageMap sehr wohl (selbst ohne IDE) aus, was es ist: eine Map aus Messages. Wer DAS nicht interpretieren kann, sollte sich einen anderen Job suchen!
Außerdem macht ein typedef auch jedes Refactoring-Tool überflüssig. Wenn ich doch einen anderen typ habe will, ändere ich nur die typedef-Stelle um - fertig!
Weiterhin ist MessageMap::iterator besser zu lesen als std::map<std::string, std::string>::iterator.
Genauso wie std::string besser zu lesen ist als std::basic_string<char>. Oder benutzt du nicht std::string?
-
danke fürs füttern ^^
-
zwutz schrieb:
- dass er keine Snippets anlegen kann
Was heißt das?
-
Bashar schrieb:
zwutz schrieb:
- dass er keine Snippets anlegen kann
Was heißt das?
in vielen IDEs kann man entweder über Tastenkommandos, Stichwörter oder aus einer Liste heraus oft benutzte Code-Schnippsel (snippets) einfügen
-
Ahja. Wie passt das dann mit deinem vorwurfsvollen "der Programmierer ist zu faul zum tippen" zusammen? Vorgefertigte Snippets sind ja wohl gerade mal eine Stufe vor Copy&Paste-Programmierung.
-
zwutz hat doch selbst vorhin zugegeben das er ein Troll ist
-
Hallo,
vielen Dank für die zahlreichen Antworten. Mhm also ich konnte (und kann) eben überhaupt nichts damit anfangen, weil mir diese Darstellung mit den eckigen Klammern, und dann noch einem Komma drin völlig unbekannt ist.
Unter welchem Thema müsste ich mich den weiter hineinwühlen, damit ich das besser verstehe? Templates? Oder hat das nicht wirklich etwas damit zu tun in diesem Beispiel?
Vielen Dank schon mal im Voraus.
-
Gast343 schrieb:
Unter welchem Thema müsste ich mich den weiter hineinwühlen, damit ich das besser verstehe? Templates?
Jepp, genau das.
-
Gast343 schrieb:
mit den eckigen Klammern
spitze klammern.
Unter welchem Thema müsste ich mich den weiter hineinwühlen, damit ich das besser verstehe? Templates? Oder hat das nicht wirklich etwas damit zu tun in diesem Beispiel?
das beispiel hat zwar etwas mit templates zu tun, ist aber trotzdem nur simples c++-basiswissen. also würde ich eher sagen, wühl dich generell weiter in c++ rein statt dich auf ein fortgeschrittenes thema wie templates zu konzentrieren.
-
Hallo
Zu dem gezeigten std::map-Template aus der StdLib findest du auch im Forumsmagazin im Artikel über Container mehr. Das ist sehr wissenswert, auch wenn man noch gar nicht richtig in die Templateinternas einsteigen will.
bis bald
akari
-
akari schrieb:
...internas...
*schubber*
(die sind bestimmt mit den Schematas verwand)
Gruß,
Simon2.