Auf Element in QSet zugreifen
-
Hi,
es scheint so, als könnte man nicht auf ein bestimmtes Element einer Liste vom Typ QSet zugreifen.
Was zum Beispiel bei einer Liste von Typ QVector so möglich ist:Vector_1[3];
oder
Vector_1.at(3);
oder
Vector_1->at(3);
geht wohl bei QSet nicht.
Oder vielleicht doch?
-
Ein QSet entspricht aber der set-Klasse (aus der STL) und der Zugriff findet über das Objekt selbst statt (vorhanden oder eben nicht): contains bzw. find.
Alternativ könntest du die Iterator-Funktionen begin und end innerhalb einer Schleife benutzen.
-
Verstehe, also scheint die einzige Möglichkeit auf das vierte Element eines QSet zuzugreifen zu sein,
Das QSet in einen QVector umzuwandeln durch:- Durchsuchen des gesamten Wertebereichs des QSet von *qset.begin() bis *qset.end()
- Vergleichen jedes einzelnen Wertes des QSet mit den möglichen Werten
- Eintragen des Wertes in den Vector falls dieser im QSet gefunden wurde
-
@theAnfänger77
Warum benutzt du QSet?
-
Ein Vorteil ist zum Beispiel, dass man keine doppelten Werte hat.
Aber natürlich kann man die auch aus einem Vector mit der Iterator-Funktion remove() rauswerfen.
-
@theAnfänger77 sagte in Auf Element in QSet zugreifen:
Ein Vorteil ist zum Beispiel, dass man keine doppelten Werte hat.
std::set und std::unordered_set bieten das auch. Warum also die Qt Klasse?
@theAnfänger77 sagte in Auf Element in QSet zugreifen:
Verstehe, also scheint die einzige Möglichkeit auf das vierte Element eines QSet zuzugreifen zu sein,
Es gibt kein viertes Element. Noch nicht einmal in Sortierreihenfolge.
-
Ich meinte das vierte Element vom Vector.
Ich müsste also alle Werte in einen Vector holen und könnte dann sortieren, dass ich eine Reihenfolge habe.
-
@theAnfänger77 sagte in Auf Element in QSet zugreifen:
Ich meinte das vierte Element vom Vector.
Ich müsste also alle Werte in einen Vector holen und könnte dann sortieren, dass ich eine Reihenfolge habe.Dann benutzt du besser gleich einen std::vector und fügst sortiert mit std::lower_bound ein.