2

次のような複数のフィールドを含むstd::vectorofがあります。struct

struct stats
{
   double mean;
   double median;
   double rms;
};
std::vector<stats> data;

で動作する関数を設計したいと思いvectorます。たとえば、ヒストグラムを作成します。structこの関数が動作する必要がある s のどのフィールドを指定できるようにしたいと思います。例えば:

build_histogram(data, get_mean);
build_histogram(data, get_median);
build_histogram(data, get_rms);

stats次のように、クラスにいくつかのゲッターを実装しようとしました。

struct stats
{
   double mean;
   double median;
   double rms;
   struct get_mean { double operator() () { return mean; };
   struct get_median { double operator() () { return median; };
   struct get_rms { double operator() () { return rms; };
};

しかし、それは非静的メンバーmeanmedianおよびの無効な使用であると述べていますrms。どうすれば正しく実装できますか?

4

2 に答える 2

0

タプルを再発明する理由

enum {mean, median, rms};
typedef std::tuple<double,double,double>  stats;
stats   st{1,2,3};
cout << get<mean>(st);
于 2013-07-04T06:51:35.183 に答える