W
Klotz schrieb:
Vielleicht lassen sich alle Zugriffe in der bool Funktion unterbringen, die von std::min_element aufgerufen wird. AM Ende sollte quasi das Vektorobjektelement stehen, dass in allen vier Abfragen den niedrigsten Wert hat.
Verstehe ich nicht. Was ist, wenn du Elemente (x=1,y=2) und (x=2,y=1) hast? Dann gibt es kein Element, das in allen Abfragen den niedrigsten Wert hat (das erste hat bei x den niedrigsten, das zweite bei y). Was dir hier gezeigt wurde, war eine Sortierung derart, dass alle Elemente zunächst unabhängig von y nach x sortiert werden. Nur bei Gleichheit in der ersten Variablen wird die zweite herangezogen.
Darf ich das so verstehen, dass über die compare Funktion von min oder max quasi eine Zugriffsfunktion auf die Vektorelemente erzeugt wird?
Nein, die compare-Funktion erzeugt keine andere Funktion! Sie ist eine Funktion, die genau 2 Elemente des Vektors vergleicht und als Returnwert angibt, ob das erste kleiner als das zweite ist (nach einer von dir zu implementierenden Definition von "kleiner"). Diese Funktion wird dann von min_element aufgerufen.
Idealer fände ich einen Iteratordurchlauf, bei dem ich über Parameter der ersten beiden Indexfunktionen meine Filter zuschalten kann... vielleicht gibt es das auch? Zunächst kann ich aber mal weiter testen.
Sorry, verstehe ich nicht.
Welche Filter? Was meinst du mit "Indexfunktionen"?
Wenn du filtern willst, dann such mal nach erase-remove-Idiom. Alternativ könnte man natürlich in der Vergleichsfunktion alle unerwünschten Elemente als "sehr groß" markieren, sodass min_element ein anderes wählen würde (dann muss man noch den Spezialfall "alle unerwünscht" behandeln).
Ansonsten kannst du einen Iteratordurchlauf auch manuell machen:
for (auto it = Auftragnehmerkopie.begin(); it != Auftragnehmerkopie.end(); ++it) {
...
}
Allerdings frage ich mich gerade, was eigentlich genau dein Ziel ist.