Ersatz gesucht: Assoziatives Array



  • Hallo zusammen,

    ich habe in einem std::vector verschiedene Strings gespeichert. Ich weiß im Voraus nicht, wie viele Strings in dem Vektor sein werden. Nun möchte jedem String eine Zahl zuweisen, die ich später brauchen werde.

    Ich denke an ein dynamisches zweidimensionales Array. Doch wenn ich jetzt beispielsweise die zugeordnete Zahl des Strings "AB" haben möchte, dann müsste ich erst das Arry nach "AB" durchsuchen und an der Stelle an schauen, welche Zahl im zweidimensionalen Array ist. Hier wäre ein assoziatives Array genial, aber die gibt es standardgemäß ja nicht. Wie würdet ihr das machen?

    Ich hoffe, ihr könnt mir folgen.

    Vielen Dank
    lg, freakC++



  • #include <map>
    #include <string>
    
    // ...
    
    std::map<std::string, int> foo;
    




  • Das klingt irgendwie nach der map:

    std::map<int, std::strin> my_map;
    
    my_map[1]="ab"; //wenn es kein element mit index  gibt, wird eins erstellt mit dem wert "ab".
                    //Wenn es das schon gibt, dann wird der string mit der id 1 überschrieben
    


  • freakC++ schrieb:

    Hier wäre ein assoziatives Array genial, aber die gibt es standardgemäß ja nicht.

    😃 Vielleicht sollte man vor solchen Behauptungen in eine Referenz schauen 😉

    Lösung: map bzw. multimap.



  • Hey, ich glaube, dass ihr mir wohl irgendwie std::map empfehlt!

    Danke. Ich habe noch nie mit der STL gearbeitet und kannte map bis eben nicht. Da hilft auch die beste Referenz nicht 🙂

    Danke für den Tipp. Ich versuche es und wenn ich dann gescheitert bin, dann melde ich mich wieder 😃 .

    Vielen Dank
    lg, freakC++


  • Mod

    freakC++ schrieb:

    Danke. Ich habe noch nie mit der STL gearbeitet und kannte map bis eben nicht. Da hilft auch die beste Referenz nicht 🙂

    😮 Programmierst du nicht seit über 2 Jahren C++?



  • SeppJ schrieb:

    freakC++ schrieb:

    Danke. Ich habe noch nie mit der STL gearbeitet und kannte map bis eben nicht. Da hilft auch die beste Referenz nicht 🙂

    😮 Programmierst du nicht seit über 2 Jahren C++?

    Dachte ich auch gerade, aber wollte ich nicht ansprechen...

    Ich empfehle dir dringend ein Buch über STL!



  • Wenn du nicht mit der STL gearbeitet hast, womit dann? Hast du alles selbst geschrieben? Oder hast du die Klassen von irgendwelchen Frameworks wie Qt benutzt?



  • Hallo,

    so viel habe ich ja auch noch nicht programmiert. Ich spiele eher immer rum, weil die Schule mir für ein größeres Projekt nicht so viel Zeit lässt.

    Und ja: Ich habe bis jetzt alles selbstprogrammiert. Ich will verstehen, was im Innerten die Programmiersprache zusammenhält 😃

    @SeppJ: Sagen wir so: Ich beschäftige mich seit über 2 Jahren mit C++. Mit immer wieder großen Pausen und vor allem der Anfang war schwer, weil ich von gar nichts eine Ahnung hatte und bei Fragen nur euch hatte. Deswegen bezeichne ich mich selber noch als Anfänger. Ich freue mich deswegen sehr auf die Zeit nach dem ABI, wenn ich wirklich Zeit habe, um dann auch tiefer einzusteigen 🙂

    lg, freakC++



  • freakC++ schrieb:

    weil die Schule mir für ein größeres Projekt nicht so viel Zeit lässt.

    😮 So viel Zeit wie in der Schulzeit wirst du wohl nie wieder haben.



  • 😮 So viel Zeit wie in der Schulzeit wirst du wohl nie wieder haben.

    Exakt. Schüler die über Zeitmangel klagen, konnte ich nie verstehen (ja, ich war bis vor 2 Jahren auch noch Schüler).
    Zwischen Abi und Studium wirst du natürlich erstmal richtig viel Zeit haben, aber wenn's zum Studium kommst, wirst du dich noch wundern wie lange du am Tag lernen kannst. Vor allem wenn du ein etwas anspruchsvolleres Fach studierst (also nicht BWL) und es auf die Klausuren zugeht.

    Und ja: Ich habe bis jetzt alles selbstprogrammiert. Ich will verstehen, was im Innerten die Programmiersprache zusammenhält 😃

    Und hattest du dabei Erfolg?

    Generell hätte ich dir geraten das parallel zu machen, wenn du wirklich mal wissen willst, wie man einen Container implementieren kann. D.h. für dein kleines Projekt nimmst du die STL und um zu schauen, wie es funktioniert bastelst du dir deinen eigenen Container (am besten mit dem STL Interface). Wenn dein Container fertig ist, tauschst du die beiden und staunst darüber, wie viel schneller die STL doch ist.



  • STL schrieb:

    Zwischen Abi und Studium wirst du natürlich erstmal richtig viel Zeit haben

    Genau darauf freue ich mich.

    Dass das Studium noch viel zeitintensiver ist, weiß ich. Doch wenn ich irgendwann mal Physik oder Informatik studieren werde, dann beschäftige ich mich hauptsächlich nur noch damit und kann mich besser auf das Programmieren konzentrieren. Meine Hauptaktivitäten im Programmieren liegen jetzt in den Ferien. Jetzt muss ich mich eben auch mit Feuerbach, Marx und dem Europäischen Währungsfond beschäftigen. DAs ist auch durchaus interessant, aber lässt nicht viel Zeit zum Programmieren. Außerdem mache ich noch vieles andere und da ist jetzt einfach kein Platz für C++ - leider! Ich stimme euch aber voll zu!

    STL schrieb:

    Vor allem wenn du ein etwas anspruchsvolleres Fach studierst (also nicht BWL) und es auf die Klausuren zugeht.

    😃 😃 😃

    Danke für eure Hilfe
    lg, freakC++



  • STL schrieb:

    *[...]*aber wenn's zum Studium kommst, wirst du dich noch wundern wie lange du am Tag lernen kannst.

    klar... 😃



  • Ich denke, die Betonung liegt auf "kannst". Auch in der Schule habe ich Tage, an denen ich von morgens bis abends nichts anderes mache....

    lg, freakC++


Anmelden zum Antworten