Map mit 2 Werten als value



  • Hallo!

    Ich brauche eine Map, die einen Int Key auf einen oder 2 Integers abbildet.
    D.h. prinzipiell wuerde das gehen:

    map<int, vector<int> > m;
    

    vector haette dann als size also IMMER 1 oder 2. Mir erscheint das nur etwas Overkill einen vector zu nehmen, wenn ich eh schon weiss, dass ich nie was anderes als einen oder 2 Werte brauche.
    Gibt es da eine bessere Struktur?



  • mappaK schrieb:

    Gibt es da eine bessere Struktur?

    Jo, std::pair oder Array z.B.

    Falls der Value Container aber wissen soll, ob er 1 oder 2 Elemente trägt, solltest du dir wohl eine kleine Klasse schreiben.



  • Boost hat static_vector, der aber auch leer sein kann.



  • mappaK schrieb:

    Gibt es da eine bessere Struktur?

    Es gibt keine bessere Struktur. Aber ich implementiere Dir mal schnell eine:

    struct MyValue {
      int oneIntegerValue;
      int otherIntegerValue;
    };
    

    Sinnvollerweise solltest Du die Bezeichner sinnvoller benennen. Ich weiß ja nicht, was Du damit erreichen willst. Die Alternative mit pair hat den Nachteil, dass die Elemente eben nur first und second heissen. Das wird schnell unübersichtlich. Insbesondere weil die map ja schon aus pair besteht.



  • tntnet schrieb:

    Die Alternative mit pair hat den Nachteil, dass die Elemente eben nur first und second heissen.

    Nichts, was ein Makro nicht flicken kann.

    #define oneIntegerValue first
    #define otherIntegerValue second
    


  • Herr Makro schrieb:

    tntnet schrieb:

    Die Alternative mit pair hat den Nachteil, dass die Elemente eben nur first und second heissen.

    Nichts, was ein Makro nicht flicken kann.

    #define oneIntegerValue first
    #define otherIntegerValue second
    

    Und dann hast Du irgendwo im Code:

    int oneIntegerValue=24;
    bool first = true;
    

    🙄 Viel Spaß beim Fehlersuchen.


Anmelden zum Antworten