對於像std :: map這樣的地圖,我該如何累計它的值'sum?
其實,我用函子和std :: for_each算法做了它。但我也想使用std :: accumulate算法。
我不知道如何將它應用於std :: map。
這甚至可能嗎?如何將std :: accumulate算法應用於關聯容器?
struct Accumurator
: std::unary_function<std::pair<int, int>, void>
{
Accumurator()
: totalValue_(0)
{
}
void operator()(const std::pair<int, int>& p)
{
totalValue_ += p.second;
}
int result() const
{
return totalValue_;
}
int totalValue_;
};
int _tmain(int argc, _TCHAR* argv[])
{
std::map<int, int> m;
m.insert(make_pair(1, 10));
m.insert(make_pair(2, 10));
m.insert(make_pair(3, 10));
m.insert(make_pair(4, 10));
m.insert(make_pair(5, 10));
m.insert(make_pair(6, 10));
int totalSum = std::for_each(m.begin(), m.end(), Accumurator()).result();
// How can I apply accumulate algorithm for associative containers.
// int totalSum = accumulate(m.begin(), m.end(), ???);
return 0;
}
Aha,** _ Fn2 ** type表示二元函數/函子?很有幫助。我沒有注意到這一點。 – Benjamin