Vector mit Klasse durchsuchen



  • Hallo,
    ich habe eine Klasse mit der Funktion getB(), die mir ein bestimmtes Rechenergebnis ausgibt. Diese Klasse ist mit einem Vector definiert. Jetzt will ich diesen Vector durchsuchen. Jedesmal wenn getB() über 30 ist soll das Programm beendet werden.

    Wie stell ich das am besten an?
    Danke schon mal!



  • Casper Rocker schrieb:

    Diese Klasse ist mit einem Vector definiert.

    Du meinst, du hast einen std::vector mit Objekten deiner Klasse? Oder wie ist das zu verstehen?

    Ich würde mir an deiner Stelle mal std::find_if() anschauen.



  • #include <vector>
    using namespace std;
    
    int main()
    {
       vector<A> vec;
       // vector füllen
    
       for(vector<A>::iterator it = vec.begin(); it != vec.end(); ++it)
           if ( it->getB() > 30 )
               exit(0);
    
       return 0;
    }
    

    aber gerade das exit ist nicht sauber und man muss an seine aufräumarbeiten denken

    was hasten du vor, vielleicht gibts ne bessere lösung



  • Aufräumarbeiten übernehmen idealerweise Destruktoren (die werden doch bei exit aufgerufen?), oder man benutzt atexit() aus <cstdlib>. Speziell im Falle von main() würde aber auch ein einfaches return zum Beenden reichen.
    Oder auch:

    for(vector<A>::iterator it = vec.begin(); it != vec.end() && it->getB() <= 30; ++it);
    


  • Oberon_0 schrieb:

    Aufräumarbeiten übernehmen idealerweise Destruktoren (die werden doch bei exit aufgerufen

    Nein, nicht zwingend. Daher sollte man wenn möglich seine Programme "sauber" beenden.



  • Man könnte einfach ein break verwenden, statt des exit(0) .



  • bmario schrieb:

    Man könnte einfach ein break verwenden, statt des exit(0) .

    jain
    ich denke er will aus irgendeiner funktion heraus beenden, da reicht ein break nicht...



  • Völlig egal, er muss halt die entsprechenden Absprünge von da schaffen. Einfach mitten im Programm exit zu sagen, ist nicht sauber. Da wäre eine ungefangene Exception ja noch besser.



  • Nexus schrieb:

    Oberon_0 schrieb:

    Aufräumarbeiten übernehmen idealerweise Destruktoren (die werden doch bei exit aufgerufen

    Nein, nicht zwingend. Daher sollte man wenn möglich seine Programme "sauber" beenden.

    sag ich ja 🙂


Anmelden zum Antworten