CD
Size: a a a
CD
CD
V🇺
AS
#include <deque>
#include <iostream>
#include <map>
template<typename T, typename C, typename GT, typename AT>
auto groupBy(const C& items, GT T::*group, AT T::*field)
{
std::map<GT, AT> m;
for(auto&& item: items)
{
m[item.*group] += item.*field;
}
return m;
}
int main()
{
struct item_type
{
std::string type;
double price;
int amount;
};
const std::deque<item_type> items = {
{"group1", 10.0, 2},
{"group2", 10.0, 3},
{"group1", 10.0, 3},
{"group1", 10.0, 3},
};
auto groups = groupBy(items, &item_type::type, &item_type::price);
for(auto&& group : groups)
{
std::cout << group.first << ": " << group.second << std::endl;
}
}
AS
V🇺
#include <deque>
#include <iostream>
#include <map>
template<typename T, typename C, typename GT, typename AT>
auto groupBy(const C& items, GT T::*group, AT T::*field)
{
std::map<GT, AT> m;
for(auto&& item: items)
{
m[item.*group] += item.*field;
}
return m;
}
int main()
{
struct item_type
{
std::string type;
double price;
int amount;
};
const std::deque<item_type> items = {
{"group1", 10.0, 2},
{"group2", 10.0, 3},
{"group1", 10.0, 3},
{"group1", 10.0, 3},
};
auto groups = groupBy(items, &item_type::type, &item_type::price);
for(auto&& group : groups)
{
std::cout << group.first << ": " << group.second << std::endl;
}
}
AS
V🇺
V🇺
🎄T
AS
#include <deque>
#include <iostream>
#include <map>
template<typename T, typename C, typename GT, typename AT>
auto groupBy(const C& items, GT T::*group, AT T::*field)
{
std::map<GT, AT> m;
for(auto&& item: items)
{
m[item.*group] += item.*field;
}
return m;
}
int main()
{
struct item_type
{
std::string type;
double price;
int amount;
};
const std::deque<item_type> items = {
{"group1", 10.0, 2},
{"group2", 10.0, 3},
{"group1", 10.0, 3},
{"group1", 10.0, 3},
};
auto groups = groupBy(items, &item_type::type, &item_type::price);
for(auto&& group : groups)
{
std::cout << group.first << ": " << group.second << std::endl;
}
}
#include <deque>
#include <iostream>
#include <map>
#include <tuple>
#include <utility>
template<typename T, typename C, typename G, size_t... I, typename ...A>
auto groupBy_(const C& items, G T::* group, std::index_sequence<I...>, A T::*...fields)
{
std::map<G, std::tuple<A...>> map;
for (auto&& item : items)
{
auto& tuple = map[item.*group];
((std::get<I>(tuple) += item.*fields), ...);
}
return map;
}
template<typename T, typename C, typename GT, typename ...AT>
auto groupBy(const C& items, GT T::*group, AT T::*...fields)
{
return groupBy_(items, group, std::make_index_sequence<sizeof...(AT)>{}, fields...);
}
int main()
{
struct item_type
{
std::string type;
double price;
int amount;
};
const std::deque<item_type> items = {
{"group1", 10.0, 2},
{"group2", 10.0, 3},
{"group1", 10.0, 3},
{"group1", 10.0, 3},
};
auto groups = groupBy(items, &item_type::type, &item_type::price, &item_type::amount);
for (auto&& group : groups)
{
std::cout << group.first << ": " << std::get<0>(group.second) << ", " << std::get<1>(group.second) << std::endl;
}
}
CD
#include <deque>
#include <iostream>
#include <map>
#include <tuple>
#include <utility>
template<typename T, typename C, typename G, size_t... I, typename ...A>
auto groupBy_(const C& items, G T::* group, std::index_sequence<I...>, A T::*...fields)
{
std::map<G, std::tuple<A...>> map;
for (auto&& item : items)
{
auto& tuple = map[item.*group];
((std::get<I>(tuple) += item.*fields), ...);
}
return map;
}
template<typename T, typename C, typename GT, typename ...AT>
auto groupBy(const C& items, GT T::*group, AT T::*...fields)
{
return groupBy_(items, group, std::make_index_sequence<sizeof...(AT)>{}, fields...);
}
int main()
{
struct item_type
{
std::string type;
double price;
int amount;
};
const std::deque<item_type> items = {
{"group1", 10.0, 2},
{"group2", 10.0, 3},
{"group1", 10.0, 3},
{"group1", 10.0, 3},
};
auto groups = groupBy(items, &item_type::type, &item_type::price, &item_type::amount);
for (auto&& group : groups)
{
std::cout << group.first << ": " << std::get<0>(group.second) << ", " << std::get<1>(group.second) << std::endl;
}
}
CD
JJ
{125,111,221,217,99}
в define?JJ
ПК
{125,111,221,217,99}
в define?JJ
AF
D
D
std::initilizer_list<int>