gpt4 book ai didi

c++ - STL::multimap - 我如何获取数据组?

转载 作者:IT老高 更新时间:2023-10-28 12:36:58 27 4
gpt4 key购买 nike

Multimap 本质上具有按键排序的数据组。我想要一种方法,通过它我可以访问这些单独的组并获取它们的汇总值。例如,在 std::multimap< string, int >我存储

{"Group1", 1}, 
{"Group1", 2},
{"Group1", 3},

{"Group2", 10},
{"Group2", 11},
{"Group2", 12}

存储了这些值后,我应该能够迭代这个 multimap 并获得每个“组”的聚合值。问题是 STL 中没有定义任何函数来以这种方式访问​​ MultiMaps。我可以使用 lower_bound , upper_bound手动迭代 multimap 并汇总组的内容,但我希望在 STL 中已经定义了更好的方法?任何人都可以提出一个解决方案,说明我如何在上面的示例中获取组的聚合值。

最佳答案

pair<Iter, Iter> range = my_multimap.equal_range("Group1");
int total = accumulate(range.first, range.second, 0);

是一种方式。

编辑:

如果您不知道要查找的组,并且只是遍历每个组,则可以像这样获取下一个组的范围:

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>());

关于c++ - STL::multimap - 我如何获取数据组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247818/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com