如何在c ++

时间:2018-06-13 15:39:48

标签: c++ transform

我想要一些关于如何在对矢量上使用变换的帮助。我经历了以前的答案但没找到我要找的东西。在下面的代码中,我将对向量的第一个元素除以常量,然后将第一个和第二个元素都转换为新的对向量。代码工作正常,但我想学习如何使用变换和lambda函数。我无法编写lambda函数。任何专家的帮助都将非常感谢,提前感谢。

template<typename T, typename U>
void GraphSigm<T,U>::doTransform()
{
    sort(v1.begin(), v1.end());
    typename std::vector<std::pair<U,U>>::const_iterator it0, it1;
    it0 = v1.begin();
    it1 = v1.end() - 1;
    U maxVal = myMax(fabs((*it0).first), fabs((*it1).first));
    for (auto i : v1) {
        U a = i.first / maxVal;
        U b = i.second;
        v2.push_back(std::make_pair(a, b));
    }
}

1 个答案:

答案 0 :(得分:2)

让我们假设你要转换int的向量,使每个数字增加2。

您可以使用std::transform + lambda函数:

std::vector<int> my_vec = {1,2,3};
std::vector<int> res_vec;
std::transform(my_vec.begin(), my_vec.end(), std::back_inserter(res_vec), [](int x){ return x+2;} );