首页 > 解决方案 > 如何使用divides和for_each?

问题描述

我有:

vector<double> ved1 = { 1,2,3,4,5,6,7,8,9,10 };
vector<double> ved2 = { 11,12,13,14,15,16,17,18,19,20 };
vector<double> ved3(10);

我想要 ved3=ved3/2 但我不能正确得到它,结果是 2/ved3; 如何使用分频器?

transform(ved1.begin(), ved1.end(), ved2.begin(), ved3.begin(), plus<double>());
transform(ved3.begin(), ved3.end(), ved3.begin(), bind1st(divides<double>(),2));`    

我想要 cos(ved2),但我无法得到它。我的代码有什么问题?

double cos_1(double x) { return cos(x); }
for_each(ved2.begin(), ved2.end(), cos_1);

标签: c++foreachc++-standard-libraryelementwise-operations

解决方案


bind1st将绑定2到 的第一个参数divides,然后将提供to的transform每个元素作为第二个参数。所以结果将是,依此类推。ved3dividesdivides(2, ved3[0])divides(2, ved3[1])

如果您想改为计算divides(ved3[...], 2),请使用bind2nd(divides<double>(), 2). 这样,2将绑定到第二个参数,而将第一个参数留空transform


推荐阅读