2012-04-23 26 views
2

stlマップに複数のboost accumulataor_setを格納したいとします。STLマップにboost accumulator_setを格納

私はローカル変数としてaccumulator_setを使用読ますべての例:私はマップにaccumulator_setを格納したいしかし

accumulator_set<int, stats<tag::rolling_mean> > acc(tag::rolling_window::window_size = 5); 

acc(1); 
acc(2); 
acc(3); 

cout << rolling_mean(acc); 

。私はこのようなコードを書くことを試みたが、私が捕まってしまった:

map<int, accumulator_set<long, stats<tag::rolling_mean> > > avg; 

void update(int id, long data){ 
    if(avg.count(id)==0){ 
     //key doesn't exist in map 
     avg[id]= ;// How to create acc as in above example and store it in map? 
    } 
    accumulator_set<long, stats<tag::rolling_mean> > &acc = avg[id]; 
    acc(data); 
} 

void read(int id){ 
    cout << rolling_mean(avg[id]) ; 
} 

は、どのように私は上記の例のようにaccumulator_setを作成し、マップに(参照またはオブジェクト)に保管していますか?

答えて

2

あなたが使用することができ、インサート():

typedef accumulator_set<long, stats<tag::rolling_mean> > acc_set_t; 

if(avg.count(id)==0){ 
    //key doesn't exist in map 
    avg.insert(std::make_pair(id, acc_set_t(/*init parameters here*/))); 
} 
関連する問題