我有:

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);

最佳答案

bind1st2绑定(bind)到divides的第一个参数,然后transformved3的每个元素提供给divides作为第二个参数。因此结果将是divides(2, ved3[0])divides(2, ved3[1])等。

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

10-07 13:57