我有两个向量,我想对它们都应用基于第三个向量的变换
std::vector<int> out1;
std::vector<int> out2;
std::vector<int> in1;
std::transform(std::begin(in1), std::end(in1), std::begin(out1), transform1);
std::transform(std::begin(in1), std::end(in1), std::begin(out2), transform2);
这需要两个循环,所以我尝试使用 range-v3 中的 zip 范围来完成
std::vector<int> out1;
std::vector<int> out2;
std::vector<int> in1;
auto &zip = ranges::zip(out1, out2);
std::transform(std::begin(in1), std::end(in1), std::begin(zip), transform1and2);
然而,这具有将 1 和 2 的转换嵌入到同一函数中的缺点,需要对其进行修改以返回 std::pair。
有没有更清洁的方法来做到这一点?