作者DEMODULATION (DEMODULATION)
看板C_and_CPP
标题[问题] C & C++ 资料型态的转换
时间Mon Jun 15 19:28:39 2009
因为各式各样的理由
我需要把C语言的:
typedef float2 Complex;
Complex* data1 = (Complex*)malloc(sizeof(Complex) * data1_size);
转换成C++里的vector:
vector<dComplex> data2;
dComplex是定义成这样
class dComplex{
public:
double dReal;
double dImag;
dComplex( double=0.0, double=0.0 );
dComplex operator=( dComplex );
dComplex operator+( dComplex );
dComplex operator-( dComplex );
dComplex operator*( dComplex );
dComplex divide( dComplex );
dComplex ComplexConj();
void set( double,double );
double getReal();
double getImag();
double abs();
double square();
};
两者的资料长度是一样的
请问我除了以下这种for loop,.push_back()这种写法之外
有没有其他更快的写法呢???
for(int i=0; i<data1_Size; i++){
data2.push_back(dComplex(data1[i].x, data1[i].y));
}
先谢谢噜~~
我试了一二楼大大给的方法
可因为我的资料型态又有dComplex又有Complex
所以好像一二楼的办法都不能用
请问有没有其他办法咧???
感谢噜~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.17.232
1F:推 Ebergies:禁术: data2.resize( data1_size); memcpy( &data2[0]... 06/15 19:42
2F:推 Fenikso:vector<float> data2(data1, data1+data1_size); 06/15 19:44
3F:推 legnaleurc:You may use std::copy 06/15 20:12
※ 编辑: DEMODULATION 来自: 140.112.17.232 (06/15 21:27)
4F:→ DEMODULATION:我把我的问题又写详细了些~~麻烦各位大大了~~感谢~~ 06/15 21:28
5F:推 sunneo:如果Complex是struct 那就为他继承吧 或者为他写个cpy ctor 06/16 11:26