Fragen zu den Sets



  • Hallo!

    Mir sind da noch einige Dinge unklar:

    1.) Der unterschied zwischen Map und Set ist, dass bei Sets keine doppelten Werte erlaubt sind. Richtig?

    1.1) Ist das der einzige unterschied?

    2.) Treemaps/sets sind immer sortiert, hashmaps/sets/tables nicht. Richtig?

    3.) Ich hab gelesen in collections bzw. sets muss die positionnicht unbedingt erhalten bleiben, wenn man das will nimmt man eine list/vector. Aber wie ist das mit maps?

    4.) Der Stack taucht in der Vererbungshierarchie gar nicht auf und ist etwas vollkommen selbststÀndiges. Richtig?

    Danke 🙂



  • ach ja, was ist ein PreSet?!?



  • Bei std::set / std::map wird automatisch sortiert.
    Das sind sogegnannte assoziative Container, da sie einen Key mit einem Value verknĂŒpfen. Auf den Value greift man unter angabe des Keys zu. Und das std::set ist ein spezial Fall der std::map, bei welchem Key und Value dasselbe sind.

    Bei beiden sind nur eindeutige Keys möglich.

    Um Key's mehrfach zu vergeben sind std::multimap / std::multiset.

    FĂŒr genauere Informationen empfehle ich die Dokumentation der entsprechenden Klassen zu lesen:
    http://www.cppreference.com/

    BTW: Bei den STL Container gibts kein Vererbungshirarchie.

    Ich hoffe dies beantwortet einige deiner Fragen.
    GrĂŒsse Simon



  • Relativ, meine fragen sind nicht C++ spezifisch sondern allgemein gestellt.

    Das die std::map dann durch eine Treemap reprĂ€sentiert wird, also eine Sortierung anhand der SchlĂŒssel erfolgt und die Implementierung ein Baum ist, geht ja schon einen Schritt tiefer.

    Ich brauch da mehr allgemeine Aussagen darĂŒber, ob meine gesammelten Informationen stimmen.



    1. Nein, das wÀre der Unterschied zwischen Set und MultiSet (bzw. zwischen Map und MultiMap)

    2. Das sind Fragen des inneren Aufbaus - Container auf BinĂ€rbaum-Basis sind sortiert (linker Nachfolger kleiner, rechter Nachfolger grĂ¶ĂŸer als (Teil)Wurzel), Container auf Hash-Basis sind unsortiert (aus dem SchlĂŒssel wird ein Index in einem Array berechnet).
      (wobei - die Anordnung im Hash-Set kann man auch als sortiert bezeichnen, nur mit etwas anderem Sortierkriterium :))

    3. Bei Set/Map wird die Position durch das Vergleichskriterium (bzw. die Hash-Funktion) bestimmt, bei Liste/Vektor/... durch die Reihenfolge der EinfĂŒgevorgĂ€nge.

    4. Stack ist (zumindest in C++) kein eigenstĂ€ndiger Container, sondern ein Container-Adapter (mit etwas eingeschrĂ€nkter FunktionalitĂ€t gegenĂŒber den Containerklassen).
      (was du mit Vererbungshierarchie meinst, mußt du genauer erklĂ€ren)


Log in to reply