我刚刚开始使用范围适配器在向量上执行转换/函数时使用范围适配器。下面是我开始使用范围适配器时遇到的最简单示例之一的片段。
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};
我是否仍然能够通过范围适配器将向量num1
和num2
送入我的功能?也许这样的东西:
auto result = num1 | num2 | boost::adaptors::transformed(multiplyBoth);
您可以使用combine
将多个范围变成一系列元组。
您需要调整功能,以便它可以处理元组,但是Lambda可以做到。