stl->accumulate
-
edit:
hi,eine frage steht als kommentar im code und die zweite unterm code
#include <iostream> #include <numeric> #include <vector> using namespace std; int average(const vector<int>& array) { int avrg = 0; avrg = accumulate(array.begin(), array.end(), avrg); //Wozu das "avrg" in der Argumentenliste? return (avrg / array.size()); } int main() { vector<int> array(10); for(int i = 0; i<10; ++i) array[i] = i+1; cout<<average(array); return 0; }
es wird zwar einwandfrei kompiliert, allerdings stürzt das programm ab.
danke[ Dieser Beitrag wurde am 29.05.2003 um 18:59 Uhr von Kräuterkundestudent editiert. ]
[ Dieser Beitrag wurde am 29.05.2003 um 19:17 Uhr von Kräuterkundestudent editiert. ]
-
T accumulate(InputIterator first, InputIterator last, T init);
Summiert init und die Elemente in [first,last) mit +.
http://www.math.uni-wuppertal.de/~axel/skripte/oop/oopC.html
-
wo kommen die fehlermeldungen her?
std::accumulate erwartet wie alle std-Algorithmen die auf Bereichen arbeiten, zwei Iteratoren. Einen auf das erste zu bearbeitende Element und einen auf eins hinter das letzte Element der Sequenz:
avrg = accumulate(array.begin(), array.end(), avrg);
//Wozu das "avrg" in der Argumentenliste?
std::accumulate sieht so aus:
template<class InIt, class T> T accumulate(InIt first, InIt last, T val);
Solange first != last wird der Ausdruck val += *first gebildet.
Der dritte Parameter ist also der Startwert für deine Summation.
-
[ Dieser Beitrag wurde am 29.05.2003 um 19:18 Uhr von elise editiert. ]
-
Ich geb auf
-
es wird zwar einwandfrei kompiliert, allerdings stürzt das programm ab.
Und das wundert dich?
vector<int> array;
for(int i = 0; i<10; ++i)
array[i] = i+1;Fällt dir was auf? Stichwort Speicher?
-
Original erstellt von Kräuterkundestudent:
**```
vector<int> array;for(int i = 0; i<10; ++i) array[i] = i+1;
Du greifst hier auf Elemente ausserhalb des Vektors zu. Besser so:
vector<int> array(10); for (int i = 0; i < 10; ++i) array[i] = i+1;
geht auch:
vector<int> array; array.reserve(10); // optional, für Performance for (int i = 0; i < 10; ++i) array.push_back(i+1);
-
grins
-
Original erstellt von HumeSikkins:
[quote] es wird zwar einwandfrei kompiliert, allerdings stürzt das programm ab.**
Und das wundert dich?vector<int> array;
for(int i = 0; i<10; ++i)
array[i] = i+1;Fällt dir was auf? Stichwort Speicher?**[/QUOTE]
oh nein
lol
mein god! gott sei dank bin ich im forumanonym
k, danke trotzdem