假设我的结构或类看起来像这样:
struct foo{ string attribute_1; int attribute_2; string attribute_3;
int value_1; int value_2; double value_3; };
在不同属性上支持foo集合的聚合操作有哪些好方法?例如。我可能想要将value_1求和,其中attribute_1是某种东西,或者属性2是什么,属性3是什么。
我一直在使用boost :: multi_index这样做,但我想听听别人怎么做。也许当你需要这种能力时,最好使用嵌入内存数据库。其他人为此做了什么?
答案 0 :(得分:0)
STL算法和仿函数将允许您以多种方式执行此类操作。例如,要将value_1与value_1相加,您可以执行类似的操作(免责声明:这不是在编译器附近)
class MyFunctor
{
public:
explicit MyFunctor(const string &str) : str_(str), sum_(0) {}
bool operator() (const foo &f) const
{
if (f.attribute_1 == str_)
{
sum_ += f.value_1;
}
}
int sum() const { return sum_; }
private:
string str_;
int sum_;
};
...
std::cout << stl::for_each(v.begin(), v.end(), MyFunctor("blah")).count() << std::endl;
其中v
例如是std::vector<foo>
。