2012-05-13 10 views
11

私は最近、優れたライブラリboost :: accumulatorsを発見しました。統計を蓄積するコードの一部を置き換えるために使用したいと思います。私はドキュメントで見つけることができません2つのboost :: accumulator_setインスタンスを合計する

ことの一つは、オペレータのように、2つのアキュムレータセットを合計する機能です+ =

例:

using namespace boost::accumulators; 
typedef accumulator_set<double, features<tag::variance> > AccumSet; 

class Foo { 
    AccumSet acc; 
public: 
    Foo& operator+=(const Foo& that) { 
     this->acc += that.acc; // error! no such operator 
     return *this; 
    } 
    double GetVariance() { return variance(acc); } 
}; 

は、どのように私はこれが可能なAPIを使用して達成することができますか?ライブラリ内のすべてのタイプのアキュムレータ(テール用ではないかもしれません)に実装できるかどうかは分かりませんが、数、合計、平均、瞬間、共分散などの重要な事柄は確かにあります。

+0

また、「これを返す」ことを忘れていますが、これは無関係ですが。 – Matt

+0

@マット、ポイントの横にあるが、まだ修正する価値がある... – killogre

答えて

3

残念ながら、この機能はBoost.Accumulatorsによって提供されていません。おそらく、組み合わせはいくつかの統計に対してのみ機能するからです。

このようなcombine機能を求めるa ticket on the Boost trackerがあります。

+0

ありがとう。私はブーストメーリングリストを見て回って同じ結論に達しました。私は4年前にオープンしましたが、そのチケットを知らなかったのです!私の質問は、サポートできる統計の回避策があるかどうかです。 – killogre

1

2つのaccumulator_set <オブジェクトを追加するには、適切で利用可能な演算子+ =はありません。

関連する問題