std::set Find mit Objekten
-
Halli hallo.
Ich habe ein schönes set, da kommen lauter kleine Instanzen von Vektoren eines Zustandsraums rein, also z.B. 10 integer Werte:
std::set<vector10d> attributeSet;Die Vector-Klasse selbst ist sehr einfach, sie hat halt ein Array mit 10 Elementen UND vor allem natürlich einen spitzenmäßigen == Operator.
class vector10d { ... int element[10]; inline const bool operator==( const vector10d &comp ) { return element[0] == comp.element[0] && element[1] == comp.element[1] && ... && element[9] == comp.element[9]; };Jaha. Und jetzt will ich, nachdem ich einen Haufen Vektoren in mein attributeSet reingetan habe später nach einem solchen suchen. Natürlich weiß ich, dass die Suche erfolgreich sein muss. Ist sie leider nicht, daher mein Posting. Einfach gesagt: find(...) funktioniert nicht. Es behauptet unnachgiebig, dass es mein gesuchtes Element nicht gibt.
if ((attributeSet.find(att) != attributeSet.end()) { //GEFUNDEN! JUHUUU!! <- nix is... :( }Dann hab ich was über find_if(...) gelesen und versucht es einzubauen, aber dollerweise gibts das nicht für ein std::set.
Was tun?

-
Falsches Forum: korrekt wäre C++
-
Dann hab ich was über find_if(...) gelesen und versucht es einzubauen, aber dollerweise gibts das nicht für ein std::set
Doch, sicher. std::find_if(..) geht mit allem was (Forward) Iteratoren zurückgibt. Dazu einfach einen eigenen Funktor implementieren.
Edit:
Hier noch die Doku: http://www.cplusplus.com/reference/algorithm/find_if/
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.