c++のクラスについて
-
p p p
c++のクラスについて
クラス型配列の複数の要素にまたがる処理(例えば各要素のメンバごとに平均を求める)を行う場合は、どのようにするのが最も自然なのかを教えてください。お願いします。ちなみに今まではクラスの静的関数を自作して、そこで処理していました。
Re: c++のクラスについて
「各要素のメンバごとに平均を求める」が良くわからないので的外れかもしれませんが、std::accumulateを使うのは如何でしょうか。
以下のコードは、配列xの全要素に対してget()を実行し、その戻り値の平均を求めます。
C++には、配列の複数の要素に対して何かするという関数が沢山用意されていますので、それらを使い分けるのがいいのではと思います。
Algorithms library
以下のコードは、配列xの全要素に対してget()を実行し、その戻り値の平均を求めます。
#include <iostream>
#include <algorithm>
#include <iterator>
class A {
int x_;
public:
A(int x) : x_(x) {}
int get() const { return x_; }
};
int main()
{
const int N = 3;
A x[N] = { A(3), A(4), A(5) };
double average = std::accumulate(std::begin(x), std::end(x), 0.0,
[](double a, const A& b) { return a + b.get(); }) / N;
std::cout << "average = " << average << std::endl;
return 0;
}
Algorithms library
-
p p p
Re: c++のクラスについて
beatleさん、ソースコードまで添えて下さってありがとうございます。正にこれです。こんな面白そうなライブラリがあるとは目から鱗で、これからばんばん使っていきたいと思います。