Multimap 本质上具有按键排序的数据组。我想要一种方法来访问这些单独的组并获取它们的聚合值。
例如,在一个std::multimap< string, int >
我存储
{"Group1", 1},
{"Group1", 2},
{"Group1", 3},
{"Group2", 10},
{"Group2", 11},
{"Group2", 12}
存储这些值后,我应该能够迭代此多重映射并获取每个“组”的聚合值。问题是 STL 中没有定义任何函数来以这种方式访问 MultiMap。我可以用lower_bound
, upper_bound
手动迭代多重映射并汇总组的内容,但我希望 STL 中已经定义了更好的方法?任何人都可以提出一个解决方案来说明如何获取上例中一组的汇总值。
pair<Iter, Iter> range = my_multimap.equal_range("Group1");
int total = accumulate(range.first, range.second, 0);
是一种方式。
Edit:
如果您不知道要查找的组,并且只是浏览每个组,则可以像这样获取下一组的范围:
template <typename Pair>
struct Less : public std::binary_function<Pair, Pair, bool>
{
bool operator()(const Pair &x, const Pair &y) const
{
return x.first < y.first;
}
};
Iter first = mmap.begin();
Iter last = adjacent_find(first, mmap.end(), Less<MultimapType::value_type>());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)