[問題] C & C++ 資料型態的轉換

看板C_and_CPP (C/C++)作者 (DEMODULATION)時間16年前 (2009/06/15 19:28), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串1/1
因為各式各樣的理由 我需要把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

06/15 19:42, , 1F
禁術: data2.resize( data1_size); memcpy( &data2[0]...
06/15 19:42, 1F

06/15 19:44, , 2F
vector<float> data2(data1, data1+data1_size);
06/15 19:44, 2F

06/15 20:12, , 3F
You may use std::copy
06/15 20:12, 3F
※ 編輯: DEMODULATION 來自: 140.112.17.232 (06/15 21:27)

06/15 21:28, , 4F
我把我的問題又寫詳細了些~~麻煩各位大大了~~感謝~~
06/15 21:28, 4F

06/16 11:26, , 5F
如果Complex是struct 那就為他繼承吧 或者為他寫個cpy ctor
06/16 11:26, 5F
文章代碼(AID): #1ADZ1eJG (C_and_CPP)
文章代碼(AID): #1ADZ1eJG (C_and_CPP)