c ++ boost range适配器多个向量

时间:2017-11-29 12:09:07

标签: c++ boost-range boost-adaptors

当我不得不在矢量上执行变换/功能时,我刚刚开始在boost中使用范围适配器。下面是我在开始使用范围适配器时遇到的最简单示例之一的片段。

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

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

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

我是否仍然可以通过范围适配器将矢量num1num2传输到我的函数中?也许是这样的:

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

1 个答案:

答案 0 :(得分:1)

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

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