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::vectormit 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
exitaufgerufen?), oder man benutztatexit()aus <cstdlib>. Speziell im Falle vonmain()würde aber auch ein einfachesreturnzum 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
exitaufgerufenNein, nicht zwingend. Daher sollte man wenn möglich seine Programme "sauber" beenden.
-
Man könnte einfach ein
breakverwenden, statt desexit(0).
-
bmario schrieb:
Man könnte einfach ein
breakverwenden, statt desexit(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
exitaufgerufenNein, nicht zwingend. Daher sollte man wenn möglich seine Programme "sauber" beenden.
sag ich ja
