#include<iostream>
#include<cmath>
#include<complex>
#include<vector>
using namespace std;
vector<complex<double> > Compute_wn(int n);
int main()
{
Compute_wn(8);
return 0;
}
vector<complex<double> > Compute_wn(int n)
{
vector<complex<double> > V[n];
for(int i = 0; i<n; i++)
{
V[i] = complex<double>(cos(2.0*M_PI*double(i)/double(n)),sin(2.0*M_PI*double(i)/double(n)));
cout<<V[i]<<"\t";
}
cout<<"\n";
}
我是C ++的新手。当我编译此代码时,我得到的错误是该错误:没有可行的重载'='。
(V[i] = complex<double>(cos(2.0*M_PI*double(i)/double(n)),sin(2.0*M_PI*double(i)/double(n)));
)我不明白对于双精度复数类型的向量,如何需要重载运算符'='。据我了解,向量是复数的向量,我应该可以直接将其分配给V [I]。
答案 0 :(得分:5)
您正在混合数组和向量语法,这是罪魁祸首:
ion-item {
overflow-y: visible
}
这定义了大小为ion-item {
overflow: visible
}
的{{1}} 的数组。由于vector<complex<double>> V[n];
不是编译时常量,因此不应允许该常量,但是某些编译器将其视为非标准扩展。参见here进行讨论。
这意味着n
实际上是vector<complex<double>>
,而不是n
,这就是为什么您不能为其分配V[i]
的原因。
解决方法是正确初始化向量:
vector<complex<double>>
注意:您当前未从函数中返回声明为返回complex<double>
的任何内容,这将导致与行为不确定相关的严重问题。你是说complex<double>
吗?