NULL +iterator



  • Hallo,
    Wollte fragen ob es einen NULL iterator gibt??
    .end() geht in einem Fall nicht.
    Der Iterator wird als Rückgabewert einer Suchfunktion zurückgeliefert, und ich würde gerne testen, ob die Suchfunktion erfolgreich gewesen ist.
    Dadurch dass ich mehrfach verschachtelte Bäume habe (multimaps ineinander), komme ich auf den .end welcher zu dem zurückgelieferten passen würde nicht. (Ih würde schon drauf kommen, aber dann müßt ich nochmal suchen 😞 Das wäre blöde)
    In der Suchfunktion würde ich dem Iterator gerne NULL zuweisen, wenn nicht gefunden wird. Dann könnte ich einfach testen. Aber die NULL Zuweisung funktioniert nicht.
    Es wäre shön, wenn es einen Iterator gäbe, welcher bei einem Vergleich mit
    *.end() immer true ergäbe. Und entsprechend *.it!=NULL.iterator.
    Gruß



  • Worde es klappen, wenn Du statt eines iterators immer ein pair<iterator,iterator> zurückgeben würdest?



  • AlexXXx schrieb:

    Dadurch dass ich mehrfach verschachtelte Bäume habe (multimaps ineinander), komme ich auf den .end welcher zu dem zurückgelieferten passen würde nicht. (Ih würde schon drauf kommen, aber dann müßt ich nochmal suchen 😞 Das wäre blöde)

    Wieso solltest du nicht darauf kommen? Nochmals suchen ist kaum nötig. Entweder du greifst direkt über end() zu, oder du speicherst dir den zugehörigen End-Iterator eben.

    Null-Iteratoren gibts nicht, weil das nicht viel Sinn macht. Es ist das naheliegendste, bei der Suche den end() -Iterator zurückzugeben, falls nichts gefunden wurde, da dann keine Sonderbehandlung eingerichtet werden muss - der Iterator befindet sich nach erfolglosem Durchiterieren zwangsläufig an dieser Stelle.

    Kannst du dein Problem an etwas Code aufzeigen? Am besten so minimal wie möglich.



  • ob es einen NULL iterator gibt
    

    STL/Standard bezogen ist der Antwort eindeutig - NEIN.
    Man benutzt dafür einen .end() iterator. Wenn ein Programm damit blöde aussieht, kann man es immer umschreiben.

    Als Alternative konnte man zB keinen iterator sondern einen Zeiger aus der Funktion zurückgeben.



  • Wie wäre es mit einer exception ?



  • Danke für eure antworten =).
    Normalerweise arbeite ich mit Zeigern. Da ist NULL eben immer super.
    Ich denke dass pair ganz gut hin haut.
    Greez.


Anmelden zum Antworten