for_each()の戻り値
2244 ワード
「function objectを使用したアルゴリズム」から「結果」または「フィードバック」を取得するには、次の3つの方法があります.
1、外部にステータスを持ち、function objectを指向させる.
2、by reference方式でfunction objectを伝達する.
3、for_を利用するeach()アルゴリズムの戻り値.
for_each()には他のアルゴリズムにはない絶技があり,function objectを返すことができる.
1、外部にステータスを持ち、function objectを指向させる.
2、by reference方式でfunction objectを伝達する.
3、for_を利用するeach()アルゴリズムの戻り値.
for_each()には他のアルゴリズムにはない絶技があり,function objectを返すことができる.
class MeanValue {
private:
long num; // number of elements
long sum; // sum of all element values
public:
// constructor
MeanValue () : num(0), sum(0) {
}
// "function call"
// - process one more element of the sequence
void operator() (int elem) {
++num; // increment count
sum += elem; // add value
}
// return mean value
double value () {
return static_cast<double>(sum) / static_cast<double>(num);
}
};
int main()
{
vector<int> coll = { 1, 2, 3, 4, 5, 6, 7, 8 };
// process and print mean value
MeanValue mv = for_each (coll.begin(), coll.end(), // range
MeanValue()); // operation
cout << "mean value: " << mv.value() << endl;
}
,MeanValue mv = for_each (coll.begin(), coll.end(), // range MeanValue());