【发布时间】:2014-06-15 12:56:18
【问题描述】:
使用标准 C++ 复数和向量库,我定义了一个复数向量。现在,我想获得指向包含这个复数向量的实部和虚部的向量的指针(double * 类型)。以下解决方案有效,但由于内存使用量增加了一倍,因此不优雅且浪费;
using namespace std;
typedef complex<double> cmp;
.
.
int i,m=10;
vector<cmp> C(m);
//Do something to populate the vector C
vector<double> R(m), I(m);
for(i=0; i<m; i++){
R[i] = C[i].real();
I[i] = C[i].imag();
}
double * r = &R[0];
double * i = &I[0];
【问题讨论】:
-
为什么要指针?
-
如果你必须有一个双精度数组,你就无法避免加倍的内存使用,因为实部和虚部在内存中并不相邻。
-
没有安全的方法可以做到这一点。双原语封装在
complex<double>对象中。你试图在错误的范围内解决更高层次的问题。 -
@Jefffrey 我需要将指针传递给我无法控制的第 3 方代码。