for_each奇妙な動作
-
27-10-2019 - |
質問
私はSTLをあまり使用しておらず、それを学び始めたいので、STLを使用して本当に簡単なプログラムを作成しました for_each
関数。ここにプログラム全体があります(ヘッダーファイルをマイナス):
class Object {
public:
int s;
Object() : s(0) { }
Object(const Object& rhs) : s(rhs.s) { }
void operator() (int a) {
s += a;
}
};
int main () {
Object sum;
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for_each(arr, arr + sizeof(arr) / sizeof(int), sum);
cout << sum.s;
cin.get();
return 0;
}
プログラム出力 0
. 。私は間違いなく使用しています for_each
間違っていますが、このコードの正確な問題は何ですか?
解決
for_each
で動作します コピー あなたが提供するファンチャーの、そして最後にコピーを返します。あなたはこれを必要とします:
sum = for_each(arr, arr + sizeof(arr) / sizeof(int), sum);
他のヒント
合計を計算したい場合は、使用することもできます std::accumulate
なので:
#include <numeric>
int sum =std::accumulate(arr, arr + sizeof(arr) / sizeof(int),0);
Functorの必要はありません!
所属していません StackOverflow