for_each frage
-
hola leute
ich hab folgenden code:
//class X; X meine_klasse(parameter); for_each(mein_vector.begin(), mein_vector.end(), meine_klasse); // etwas mit meine_klasse machenfunktioniert natuerlich nicht. meine_klasse ist dann noch immer leer.
aber wie kann ich das dann machen?
nach for_each wuerde meine klasse unter umstaenden jedoch ein paar hundert strings beinhalten. wenn ich es jedoch someine_klasse = for_each(mein_vector.begin(), mein_vector.end(), meine_klasse);machen wuerde, waere das jedoch ein riessiger aufwand den ich vermeiden will.
wie stell ich das dann also an ?
oder muss ich mir da das for_each selber nachbauen und so modifizieren damit das klappt ??Meep Meep
-
Was willst Du denn damit machen?
Ich bin mir ziemlich sicher, dass Du nicht verstanden hast, was for_each normalerweise macht.
for_each ist nämlich dazu da, ein Funktionsobjekt (Parameter #3) auf eine Sequenz von Objekten anzuwenden (Parameter #1-#2). Siehe dazu auch http://www.sgi.com/tech/stl/for_each.html
-
hoi nman
ansich glaub ich schon das ich verstanden habe was for_each macht.
mir geht es darum das in dem vector ein haufen strings drinnen stehen.
meine_klasse beherbergt auch einen vector<string>.
meine_klasse ueberpruft dann die einzelnen strings. und wenn der jeweilige string in ein bestimmte schema passt, dann wird er in den vector von meine_klasse reinkopiert. am schluss hab ich dann die gesuchten strings in meine_klasse.Meep Meep
-
Schau Dir dazu besser mal remove_copy_if an, der kopiert Elemente von einem Vektor in einen anderen und lässt dabei Elemente aus (sprich entfernt sie aus dem Zielvektor) die einem Prädikat gehorchen.
-
re
die elemente sollen ja nur kopiert und nicht geloescht auch noch.
Meep Meep
-
Hallo,
remove_copy_if kopiert alle Elemente zwischen (start, end] für die das Prädikat _nicht_ true ist. Es wird also nicht wirklich etwas gelöscht.Gruß, Caipi
-
ich will und kann kein remove_copy_if verwenden.
ich will einfach nur wissen ob es eine moeglichkeit gibt das ich for_each ein object uebergeben kann, das ich dann auch noch weiterverwenden kann oder ob das nicht geht.
davon abgesehen is der vector in meine_klasse kein std::vectorMeep Meep
-
Man könnte jetzt argumentieren dass das kein Hindernis ist, da Du ja einen Adapter-Iterator basteln könntest aber ums mal kurz und knackig zu formulieren for_each nimmt eine Kopie des Funktors, also ohne den "riesen Aufwand" (rumkopiererei) kannst Du es so nicht machen.
-
danke