gpt4 book ai didi

c++ - 是否有任何标准功能可用于创建以容器为 mapped_type 的 map 的平面 View ?

转载 作者:行者123 更新时间:2023-12-05 08:45:38 27 4
gpt4 key购买 nike

是否有任何标准功能可以创建所有对的范围/ View ?以下代码说明了我要创建的 View :

std::unordered_map<std::string, std::vector<int>> m{{"Foo", {1,2}}, {"Hello", {4,5}}};
auto view = ???;
std::vector<std::pair<std::string, int>> v{view.begin(), view.end()};
std::vector<std::pair<std::string, int>> out1{{"Foo", 1}, {"Foo", 2}, {"Hello", 4}, {"Hello", 5}};
std::vector<std::pair<std::string, int>> out2{{"Hello", 4}, {"Hello", 5}, {"Foo", 1}, {"Foo", 2}};
assert(v == out1 || v == out2);

注意:编写一个嵌套的 for 循环来迭代这个结构是微不足道的。

最佳答案

如果C++23最终采用views::cartesian_product , 这是另一种方式

std::unordered_map<std::string, std::vector<int>> m{
{"Foo", {1,2}}, {"Hello", {4,5}}};
auto view = m | views::transform([](auto& p) {
return views::cartesian_product(views::single(p.first), p.second); })
| views::join;

Demo

关于c++ - 是否有任何标准功能可用于创建以容器为 mapped_type 的 map 的平面 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72100838/

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