STL алгоритмы и функторы позволят вам делать подобные вещи разными способами.Например, чтобы суммировать value_1, где attribute_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>
.