如何在 c++ 中将变换与对的向量一起使用

How to use transform with vectors of pairs in c++

本文关键字:向量 一起 变换 c++      更新时间:2023-10-16

我想得到一些关于如何在对向量上使用变换的帮助。我浏览了之前的答案,但没有找到我要找的东西。在下面的代码中,我将对向量的第一个元素除以一个常量,然后将第一个和第二个元素转移到新的对向量。代码工作正常,但我想学习如何将 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));
}
}

假设你想变换一个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;} );