我有:
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);
最佳答案
bind1st
将2
绑定(bind)到divides
的第一个参数,然后transform
将ved3
的每个元素提供给divides
作为第二个参数。因此结果将是divides(2, ved3[0])
,divides(2, ved3[1])
等。
如果要计算divides(ved3[...], 2)
,请使用bind2nd(divides<double>(), 2)
。这样,2
将绑定(bind)到第二个参数,而第一个保留为transform
。