看来我在这里做错了什么。你能帮助我吗?目的是将 inner_product 用于复杂向量。
#include<iostream>
#include<vector>
#include <numeric>
#include <complex>
using namespace std;
template<class T>
complex< T > complex_prod(complex< T > a, complex< T > b)
{
return conj<T>(a)*b;
}
template<class T>
complex< T > add_c(complex< T > a, complex< T > b)
{
return a+b;
}
int main()
{
complex<double> c1(1.,3.);
complex<double> c2(2.,4.);
vector<complex<double> > C1(3,c1);
vector<complex<double> > C2(3,c2);
cout<<inner_product(C1.begin(),C2.end(),C2.begin(),0.,add_c<double>,complex_prod<double>) <<endl;
return 0;
}
我不明白为什么会出现转换问题,一切似乎都已定义,迭代应该没有问题。