【发布时间】:2011-10-19 14:11:50
【问题描述】:
对于像 std::map 这样的地图,我如何累积它的值的总和?
实际上,我是用仿函数和 std::for_each 算法实现的。但我也想使用 std::accumulate 算法来做到这一点。
我不知道如何将它应用到 std::map。
这甚至可能吗?
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;
}
【问题讨论】:
标签: c++ algorithm visual-studio-2008 stl map