繁体   English   中英

如何通过 ref 联合迭代 2 个向量?

[英]How do I joint iterate over 2 vectors by ref?

我正在尝试使用 std::views::join 在一个 go 中迭代 2 个向量

这是我正在尝试的:

std::vector<int> a {1, 2, 3}, b {4, 5, 6};
    for (auto &v : {a, b} | std::views::join)
    {
        std::cout << v << std::endl;
    }

这无法编译。 现在,如果我将代码更改为:

for (auto &v : std::ranges::join_view(std::vector<std::vector<int>> {a, b}))
    {
        std::cout << v << std::endl;
        v++;
    }

它编译并执行,但是ab的内容没有被修改。

如何以可以在循环内修改 a 和 b 的元素的方式联合迭代 a 和 b?

如何以可以在循环内修改 a 和 b 的元素的方式联合迭代 a 和 b?

您可以使用views::all获取对两个vector的引用并将它们组合成一个新的嵌套vector

std::vector<int> a {1, 2, 3}, b {4, 5, 6};
for (auto &v : std::vector{std::views::all(a), std::views::all(b)} // <-
             | std::views::join)
{
  std::cout << v << std::endl;
  v++;
}

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM