我想在 STL map 中存储多个 boost Accumulataor_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);
但是我想存储 accumulator_set
在 map 中。我尝试编写这样的代码,但我卡住了:
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
如上面的示例所示并将其(引用或对象)存储在 map 中?
最佳答案
您可以使用 insert():
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*/) ));
}
关于c++ - 将 boostaccumulator_set 存储在 STL 映射中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273888/