gpt4 book ai didi

C++ boost range adapter 多个 vector

转载 作者:行者123 更新时间:2023-11-30 05:07:16 27 4
gpt4 key购买 nike

当我不得不对 vector 执行变换/函数时,我最近才开始在 boost 中使用范围适配器。下面是我在开始使用范围适配器时遇到的最简单示例之一的片段。

int multiplyByTwo(int n) { return n*2; }
std::vector<int> num = {1, 2, 3, 4, 5};
auto result = num | boost::adaptors::transformed(multiplyByTwo);

如果我的函数需要两个参数而不是一个参数怎么办,有没有什么方法可以将两个 vector 传递到范围适配器中?例如,在这种情况下:

int multiplyBoth(int n1, int n2) {return n1*n2; }
std::vector<int> num1 = {1, 2, 3, 4, 5};
std::vector<int> num2 = {1, 2, 3, 4, 5};

我是否仍然能够通过范围适配器将 vector num1num2 通过管道传递到我的函数中?也许是这样的:

auto result = num1 | num2 | boost::adaptors::transformed(multiplyBoth);

最佳答案

您可以使用 combine将多个范围转换为一系列元组。

您需要调整您的函数,以便它可以处理元组,但 lambda 可以做到这一点。

关于C++ boost range adapter 多个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47552522/

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