C++中的复杂数组 - 实部,想象部
Complex arrays in C++ - real part, imag part
请您帮助我解决C++中复杂数组的问题吗?如果我有一个 cmplx 数字的数组 Arr[N],现在我需要 Arr[i] 的实部。在标头中有一个复杂的数组 CompArray 定义为
cmplx** CompArray;
然后我将其分配为具有尺寸 [nmax][nmax]
然后我有一个函数1,我只使用其中的一部分并编写
myclass::function1(double* realArray)
realArray = new double [nmax];
cmplx* ComplexArray [nmax];
ComplexArray[] = CompArray[10][];
for(int i=0;nmax;i++){
realArray[i] = ComplexArray[i].real();
}
我收到一个错误:
error: expression must have class type
对于 real() 或 imag() 函数,错误是相同的
cmplx* ComplexArray [nmax];
这不是一个复数数组;它是一个指向数字的指针数组。看起来你需要一个指向(第一个)数字数组的指针:
cmplx* ComplexArray = CompArray[10];
然后ComplexArray[i]
是所需的复数(具有"类类型"的表达式)。
一旦你解决了这个问题,这看起来有点狡猾:
realArray = new double [nmax];
你已经传递了一个指针,然后你把它扔掉并分配一个新的数组。调用方不会看到该数组,因此您所做的只是泄漏内存。您可以通过引用传递指针,也可以从函数返回指针;这样,调用方至少会得到结果。
但是,将原始指针传递到动态内存并希望它们在正确的时间被删除是一个坏主意。相反,传递负责管理内存的对象;在这种情况下,容器将是理想的:
std::vector<double> myclass::function1() {
std::vector<double> realArray;
cmplx* ComplexArray = CompArray[10];
for(int i=0;i<nmax;i++){
realArray.push_back(ComplexArray[i].real();
}
return realArray;
}
相关文章:
- 如何将部分流作为参数传递
- 有没有办法修改'operator->',以便'z->im'返回复数的虚部
- 如何删除部分类?
- 如何只链接到柯南包中的部分库?
- 无法打印用户填充的部分数组的反面
- 使用类型特征的部分类专用化
- 将 CRTP 与部分类专用化结合使用?
- 为什么 C++17 标准没有带来部分类模板参数扣除?
- C++17 中的部分类模板参数推导
- 是否可以保证输入<Type>实数时复杂对象的虚部设置为零?
- 针对多种类型的部分类模板专用化
- 如何在 Eigen3 库中高效提取复矩阵的实部/虚部?
- FFTW和OpenCV的C++接口,Mat输出中的实部和虚部
- 如何将实部和虚部放入一个变量中,就像在matlab中一样
- 在c++的复杂类中,为实部和虚部指定了多少位
- C++中的复杂数组 - 实部,想象部
- 复数的实部和虚部
- 在c++中获取指向复向量实部和虚部的指针
- 用C++中的[]运算符可以访问复数的实部和虚部吗
- C++复数的最高元素(最高实部)