如果我有一个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/

10-11 22:06