Christoph Rabel Guest
|
Posted: Fri Sep 05, 2003 2:02 pm Post subject: Re: Warum geht for_each nicht? |
|
|
Andreas Nicolai wrote:
| Quote: | Der folgende Code compiliert zwar anstandslos (sowohl unter BCC5 als auch
unter gcc 3.1) aber er funktioniert nicht, d.h. das Ergebnis ist 1 und
nicht wie erwartet 2.
|
Hmm, Rundungsfehler?
SCNR ;-)
| Quote: | ----
vector<double> vec(10);
fill(vec.begin(), vec.end(), 1.0);
|
Warum nicht einfach:
vector<double> vec(10, 1.0);
Uninitialisiert? Tztz... :-)
| Quote: | for_each(vec.begin(), vec.end(), bind2nd(multiplies<double>(), factor));
cout << vec[0] << endl;
|
for_each wendet einfach den Funktor auf jedes "Objekt" im
Iteratorrange an. Das Ergebnis wird dabei aber nicht in den
Iterator geschrieben. In diesem Fall wird für jedes Element
factor * Element berechnet und dann weggeworfen.
| Quote: | Wenn ich die for_each Anweisung mit folgender ersetze, funktionierts
tadellos...
----
transform(vec.begin(), vec.end(), vec.begin(),
bind2nd(multiplies
----
|
transform bekommt einen Quellrange und einen Zielrange. In
den Zielrange werden die Rückgabewerte des Funktors geschrieben.
mfg
Christoph
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|