gpt4 book ai didi

c++ - 将 double * 转换为 complex*

转载 作者:行者123 更新时间:2023-11-27 23:08:04 25 4
gpt4 key购买 nike

我正在尝试将 double * 转换为 complex* 。我只有一个 2x2 矩阵 D(双)的示例,我想将其转换为复数 (C):

typedef complex<double> dcmplx;

int main() {

dcmplx *C;
double *D;
int N=2;

D=new double[N*N];
C=new dcmplx[N*N];
*C=static_cast<dcmplx>(*D);

for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
D[i*N+j]=i+j;
}
}


for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
cout <<D[i*N+j]<<"\t";
}
cout <<"\n";
}


cout <<"\n\n";
cout <<"Complex\n";
for (int i=0;i<N;i++){
for (int j=0;j<N;j++){
cout <<C[i*N+j]<<"\t";
}
cout <<"\n";
}


return 0;

}

这是正确的做法吗?

最佳答案

自 c++11 起,您可以将复数数组转换为 double 组,见http://en.cppreference.com/w/cpp/numeric/complex

所以这是可能的:
std::complex<double> a[10];
double *b = reinterpret_cast<double *>(a);

它也适用于 vector :


std::vector<std::complex<double>> a(10);
double *b = reinterpret_cast<double *>(a.data());

非常方便。

关于c++ - 将 double * 转换为 complex*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com