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