Trotz was andere hier geschrieben haben, glaube ich nicht, dass "Index" oder "Position" Bedeutung in Bezug auf eine Menge hat. In mathematischen Begriffen legt ein Satz nur seine Mitglieder und vielleicht seine Kardinalität offen. Die einzigen sinnvollen Operationen umfassen das Testen, ob ein Element ein Mitglied der Menge ist, und das Kombinieren oder Subtrahieren von Mengen, um neue Mengen zu erhalten.
Einige Leute sprechen über Sätze als Datenstrukturen in loserer Begriffen, durch Facetten der "bestellt" oder "ungeordnet", und ob sie Duplikate erlauben oder Eindeutigkeit erzwingen. Die erstgenannte Facette unterscheidet ein Array mit einem Einfügungsschutz, bei dem ein Versuch, ein Objekt einzufügen, zuerst die vorhandenen Mitglieder scannt, um zu sehen, ob das neue Objekt existiert, und falls nicht, das neue Objekt am Ende einzufügen, und eine Hash-Tabelle, die könnte behalten solche Reihenfolge nur innerhalb einer Eimer Kette. Ein Baum wie der rot-schwarze Baum, der von std::set
verwendet wird, liegt irgendwo dazwischen; seine Durchlaufreihenfolge ist in Bezug auf das strict weak order, das durch das Komparatorprädikat vorgegeben wird, deterministisch, aber im Gegensatz zu dem oben skizzierten Array behält es die Einfügereihenfolge nicht bei.
Die andere Facette - ob der Satz doppelte Elemente erlaubt - ist in der Mathematik bedeutungslos und wird genauer als Tasche beschrieben. Eine solche Struktur erkennt den Unterschied zwischen Identität und wertebasierter "Gleichheit" an.
Ihr Problem kann sich auf einige Positionen beziehen; Es ist nicht klar, was diese Position bedeutet, aber ich nehme an, dass Sie eine Datenstruktur benötigen, die von std::set
getrennt ist, um dies richtig zu modellieren. Vielleicht würde eine std::map
Zuordnung von Ihrem Satz von Elementen zu jeder Position tun. Das würde nicht garantieren, dass die Positionen einzigartig sind.
Es kann auch helfen, das Problem zu klären, zu denken, wie Sie es als Relationen modellieren würden, wie in einer relationalen Datenbank. Was beinhaltet den Schlüssel? Welche Teile der Entitäten können unabhängig voneinander variieren?
http://stackoverflow.com/questions/1796503/index-or-position-in-stdset/1810416#1810416 @seh wenn wir semantisch sehen, was auch immer Sie gesagt haben, ist korrekt Aber die Sätze sind geordnet. Sie werden normalerweise mit einer Art ausgewogener Bäume wie einem roten schwarzen Baum implementiert und verwenden eine strenge schwache Ordnung, um die Elemente in der Menge zu ordnen. Ich weiß nicht, ob Standard diese Bestellung vorschreibt oder nicht. Aber das ist, wie es ist –