返回(两个)逐元素相加的向量中的最大值

vuwu

我编写了一个函数,该函数首先将两个向量相加(v1并相b1加到vsum),然后返回的最大值vsum这是我尝试运行的程序,由于某些原因它不起作用:

double MaximumOfSummedVectors(std::vector<double> &v1,std::vector<double> &v2) {
    std::vector<double> vsum;
    std::transform(v1.begin(),v1.end(),v2.begin(),vsum.begin(),std::plus<double>());
    return *std::max_element(std::begin(vsum),std::end(vsum));
}

我测试过这两者的功能std::transformstd::max_elementstd::plus<double>在我的主要环境。一切都按预期进行。我在俯视什么?

巴里

您忽略了两件事:第一是未定义的行为!

std::vector<double> vsum;

vsum此时大小为零。但是transform只会写入您传入的迭代器中

效果:通过范围内[result,result + (last1 - first1))每个迭代器i分配等于...的新的对应值。

但是该范围尚未初始化-因此您将要写入未初始化的内存!您需要执行以下任一操作:

vsum.resize(v1.size());

或通过插入程序:

std::transform(v1.begin(),v1.end(),v2.begin(),
     std::back_inserter(vsum),
     std::plus<double>());

第二件事是您出于某种原因正在构建整个新向量:

double MaximumOfSummedVectors(std::vector<double> &v1,std::vector<double> &v2) 
{
     auto i1 = v1.begin(), i2 = v2.begin();
     double m = *i1++ + *i2++;
     for (; i1 != v1.end(); ++i1, ++i2) {
         m = std::max(m, *i1 + *i2);
     }
     return m;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何逐元素找到2个向量的最大值?

来自分类Dev

如何逐元素找到2个向量的最大值?

来自分类Dev

删除R中两个向量的最大值

来自分类Dev

两个稀疏矩阵的按元素最大值

来自分类Dev

比较excel中的两个日期和时间以返回两列中最大的最大值

来自分类Dev

R中两个相等的最大值

来自分类Dev

列表中两个切片的最小最大值/最大值

来自分类Dev

列表中两个切片的最小最大值/最大值

来自分类Dev

在Matlab中,通过将两个正交向量的元素相加来生成矩阵

来自分类Dev

在Matlab中,通过将两个正交向量的元素相加来生成矩阵

来自分类Dev

多维数组的逐元素最大值

来自分类Dev

如何计算两个向量之间的成对最大值?

来自分类Dev

如何返回最大值为两个列的行号

来自分类Dev

计算Less中两个值的最小值/最大值

来自分类Dev

计算Less中两个值的最小值/最大值

来自分类Dev

使div宽度最大值为两个值?

来自分类Dev

在两个值之间选择最大值PostgreSQL

来自分类Dev

装配找到两个值的最大值

来自分类Dev

两个零之间值的最大值

来自分类Dev

将两个不同表中的两列相乘后找到最大值-SQL

来自分类Dev

在R中两个值的指定范围内查找最大值

来自分类Dev

在具有多个条件的向量中返回最大值

来自分类Dev

内部联接两个表,并为第二个表的第一个表中的每个条目返回最大值

来自分类Dev

按两个不同表中两个日期时间字段的最大值排序

来自分类Dev

绘制两个图的最大值

来自分类Dev

R矩阵获得两个最大值的索引

来自分类Dev

Enumerable.Max()如果两个最大值

来自分类Dev

如何获得两个联接变量的最大值

来自分类Dev

显示两个Div标签的最大值

Related 相关文章

热门标签

归档