如果我有一个double of PMF的向量,则可以使用以下transform命令将向量的所有元素除以double计数:
transform(PMF.begin(),PMF.end(),PMF.begin(),bind2nd(divides<double>(),count));
但是现在,我有了一个无符号字符/双对向量:
vector<pair<unsigned char, double>> PMF
我希望将双精度值替换为它们的值除以计数。我还没有找到使用transform命令或任何其他C ++ 11功能执行此操作的方法。有谁知道如何做到这一点?
最佳答案
您可以像下面一样使用lambda函数:
transform(PMF.begin(),
PMF.end(),
PMF.begin(),
[count](const pair<unsigned char, double> &x)
{
return make_pair(x.first, x.second/count);
});
要么
for_each(PMF.begin(),
PMF.end(),
[count](pair<unsigned char, double>& x)
{
x.second /= count;
});
要么
for (auto &x : PMF)
x.second /= count;
关于c++ - 在C++中处理对 vector 的值之一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20192795/