请教各位朋友,在C++中怎么实现复数数组

请问各位朋友,在C++中如何实现复数数组?
请问各位朋友,在C++中如何实现复数数组?我想有标准库中的complex来实现,为什么不行呢?程序如下:


#include   "stdafx.h "
#include   "math.h "
#include   <complex>

void   DFT(complex <float>   a[],complex <float>   b[],int   N)
{
for   (int   k   =   0;k <N;k++)
{
b[k]=(0,0);

for(int   n   =   0;n <N;n++)
{
complex <float>   mm   =   (0,(2*3.14/N)*k*n);
b[k]=b[k]+(a[n]*(exp(mm));
}
}
}


int   main()
{
complex <float>   x[3]={(1,0),(1,0),(1,0)};
complex <float>   y[3];

DFT(x,y,3);

for(int   k=0;k <3;k++)
{
printf( "y[%d]   =   %f+i%f\n ",k,y[k]);
}

return   0;
}



------解决方案--------------------
b[k]=b[k]+(a[n]*(exp(mm));
--> >
b[k]=b[k]+(a[n]*(exp(mm)));
------解决方案--------------------
#include <iostream>
#include <math.h>
#include <complex>
using namespace std;

int main()
{
complex <float> x[3]={complex <float> (1,0),complex <float> (2,1),complex <float> (3,4)};

for(int k=0;k!=3;k++)
{
cout < < "x[ " < <k < < "] = " < <x[k] < <endl;
}

return 0;
}

------解决方案--------------------
注意数组的初始化表!
------解决方案--------------------
printf( "x[%d] = %f ",k,x[k]);
===============================
关键问题在这里,x[k]是个complex对象,直接用printf把一个对象打印出来是不行的。
------解决方案--------------------
使用类包装一下。
------解决方案--------------------
模板?