Array mit String als Index



  • Hy!,

    kann ich in C++ (Borland vcl) ein Array oder Container erstellen, den ich gefolgt ansprechen kann:

    list["farbe"] = "rot";
    list["name"] = "holz";
    

    Ich hab gegoogelt, und braeuchte praktisch "verschachtelte/mehrdimensionale Vektoren mit Strings als Indizes".

    Alternative waere noch struct, faende die obere Loesung aber schoener.

    Geht sowas?



  • Was du suchst ist eine Hash-Table. In der STL solltest du fündig werden.
    Hash_map und Hash_set.
    Finde ich aber etwas Oversized, wenn du es genauso mit einem Struct machen könntest.



  • cproc schrieb:

    Ich hab gegoogelt, und braeuchte praktisch "verschachtelte/mehrdimensionale Vektoren mit Strings als Indizes".

    Schau dir mal die std::map an (Header <map>)

    #include <string>
    #include <map>
    
    int main()
    {
      //       Schlüssel    Wert
      std::map<std::string, std::string> lexikon;
      lexikon["Farbe"] = "Color";
      lexikon["Baum"] = "Tree";
    }
    

    Zur genauen Verwendung gibt es wirklich genügend Beispiele im Netz als das ich jetzt sehr ausführlich werde...


  • Administrator



  • cproc schrieb:

    Alternative waere noch struct, faende die obere Loesung aber schoener.

    Sofern es Bestandteile sind die immer gleich lauten und Instanzbezogen sind, ist eine struct oder class definitiv deutlich besser. Und auch besser zu lesen (sowie typsicher).

    artikel.farbe = "rot";
    artikel.name = "Ford Fiesta";
    artikel.preis = 12000;

    Wenn es um freie Werte (wie mein Lexikonbeispiel) geht, ist die std::map (oder etwas vergleichbares) besser.



  • Hy,

    das Codebeispiel sieht ja sehr trivial aus, genau sowas hab ich gesucht :).
    Das "einfach mit struct" zu machen, habe ich festgestellt geht doch nicht so schnell da ein Vektor von structs noch Methoden zum Lesen und Schreiben braucht... Da will ich mich nicht einlesen, sondern schnell und einfach mal eben was umsetzen - map scheint das wohl zu sein 🙂

    Vielen Dank!



  • Storm.Xapek.de schrieb:

    Was du suchst ist eine Hash-Table. In der STL solltest du fündig werden.
    Hash_map und Hash_set....

    😮 😕
    falsches Forum ?

    Unter "Hash(_xy)" wird er in der STL bestimmt nicht fündig .... (jedenfalls nicht in der standardisierten)

    Gruß,

    Simon2.


Anmelden zum Antworten