C++ algorithm like python's 'groupby'

后端 未结 6 614
再見小時候
再見小時候 2020-12-15 22:20

Are there any C++ transformations which are similar to itertools.groupby()?

Of course I could easily write my own, but I\'d prefer to leverage the idiomatic behavior

6条回答
  •  清歌不尽
    2020-12-15 22:43

    How about this?

    template 
    auto GroupBy(const std::vector& instances, const FieldSelectorUnaryFn& fieldChooser)
    {
        StructType _;
        using FieldType = decltype(fieldChooser(_));
        std::map> instancesByField;
        for (auto& instance : instances)
        {
            instancesByField[fieldChooser(instance)].push_back(instance);
        }
        return instancesByField;
    }
    

    and use it like this:

    auto itemsByX = GroupBy(items, [](const auto& item){ return item.x; });
    

提交回复
热议问题