Announcement

Collapse
No announcement yet.

assoziatives array

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • assoziatives array

    Hallo zusammen,
    ist es mit c++ möglich, ein assoziatives array zu erstellen, also daten["wert1"] = 12; habe schon mit StringList und hash rumprobiert, aber ist nichts geworden, wie geht das also... das kann doch nicht sein, dass c++ sowas nicht hat !!
    DANKE!

  • #2
    Such dazu mal nach "map" in der Hilfe. Das sollte nämlich mit
    <tt>std::map&lt;std::string, int&gt; meinAssoziativesArray</tt> gehen.
    <p>Variante 2: Aus dem "StringList" schließe ich mal, das du mit dem C++-Builder arbeitest?
    Wenn ja, kannst du auch TStrings-Objekte als assoziative Arrays "missbrauchen"
    (siehe TStrings.IndexOf, TStrings.AddObject und TStrings.Objects). Die nehmen zwar eigentlich
    nur Objekte auf, aber mittels Casten kannst du auch Integers reinstecken.
    <p>Ciao, Uli

    Comment


    • #3
      Hallo,
      hab schon gesucht, aber leider nichts dazu gefunden... bin dafür aber woanders fündig geworden, hab aber noch ein Problem:
      <pre>
      #include <map>
      #include <string>
      using namespace std;
      map<string,int> fach_groesse;

      // DAS GEHT
      fach_groesse["hallo"] = 12;

      // DAS NICHT
      AnsiString temp = SQL_Projekte->Fields->Fields[1]->AsString;
      int temp_int = SQL_Projekte->Fields->Fields[2]->AsInteger;
      fach_groesse[temp] = temp_int;
      </pre>
      Da kommt immer dieser Fehler:
      [C++ Error] functions.h(816): E2094 'operator+' not implemented in type 'map<string,int,less<string>,allocator<pair<const string,int> > >' for arguments of type 'AnsiString'

      WIESO????? Das verstehe ich absolut nicht, wie kann ich den Fehler beheben?

      DANKE DANKE DANKE!!
      chrisf

      Comment


      • #4
        fach_groesse ist eine map von <b>string</b> auf int, du indizierst sie aber mit
        einem <b>AnsiString</b>, deshalb die Beschwerde des Compilers. Ich würde dir raten,
        die beiden Stringklassen nicht zu mischen, wo es nicht nötig ist, und fach_groesse z.B.
        als map&lt;AnsiString,int&gt; fach_groesse; zu deklarieren.
        <p>Wenn es denn eine map&lt;string,int&gt; sein muss, dann probier mal in der letzten
        Zeile fach_groesse[temp.c_str()] = temp_int; oder so ähnlich.
        <p>Ciao, Uli

        Comment


        • #5
          Hi,
          vielen vielen Dank!!! Ich hatte nicht gewusst, das string und AnsiString unterschiedlich sind, jetzt funktioniert's
          Danke, da wäre ich echt nicht drauf gekommen!

          Viele Grüsse
          chrisf

          Comment

          Working...
          X