C++ 如何对两个vector<double> 求和?
大致代码如下vector<double>vect1,vect2,res;vect1.push_back(1);vect1.push_back(1);vect2.push_...
大致代码如下
vector<double> vect1, vect2, res;
vect1.push_back(1);
vect1.push_back(1);
vect2.push_back(2);
vect2.push_back(2);
我想把这两个向量对应求和,放到res中,也就是:
res.at(0) = vect1.at(0) + vect2.at(0);
res.at(1) = vect1.at(1) + vect2.at(1);
我知道用循环或者迭代器遍历可以进行这样的算法,最近看到了容器算法,想用stl里面的已有的函数改进一下自己的设计
找到了accumulate(), adjacent_difference(), inner_product(), partial_sum()四个函数
但是总是组合不出自己想要的这种算法,求解,谢谢
之前想到了个笨方法,再新建一个vector<vector<double> > mat每个元素中放一个vector,再写一个对每个元素求和的函数,但是发现效率太低了
还有一个想法,就是写一个对象,能把求和累加起来,但是还没有想太通 展开
vector<double> vect1, vect2, res;
vect1.push_back(1);
vect1.push_back(1);
vect2.push_back(2);
vect2.push_back(2);
我想把这两个向量对应求和,放到res中,也就是:
res.at(0) = vect1.at(0) + vect2.at(0);
res.at(1) = vect1.at(1) + vect2.at(1);
我知道用循环或者迭代器遍历可以进行这样的算法,最近看到了容器算法,想用stl里面的已有的函数改进一下自己的设计
找到了accumulate(), adjacent_difference(), inner_product(), partial_sum()四个函数
但是总是组合不出自己想要的这种算法,求解,谢谢
之前想到了个笨方法,再新建一个vector<vector<double> > mat每个元素中放一个vector,再写一个对每个元素求和的函数,但是发现效率太低了
还有一个想法,就是写一个对象,能把求和累加起来,但是还没有想太通 展开
4个回答
展开全部
用transform吧,第2种参数的
template<class T>class sumtwo{public:T operator()(const T& a,const T& b)const{return a+b;}};
transform(vect1.begin(),vect1.end(),vect2.begin(),back_inserter(res),sumtwo<double>());
template<class T>class sumtwo{public:T operator()(const T& a,const T& b)const{return a+b;}};
transform(vect1.begin(),vect1.end(),vect2.begin(),back_inserter(res),sumtwo<double>());
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
stl应该不会有这样的算法,要求两个容器大小相等,通用性不强。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
STL的算法研究不多。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询