1

C++ この配列型をベクターにコピーする方法

クラス VehicleTwoD のこの配列を取得しました

メイン関数でこのように宣言します

VehicleTwod *vechicletwod[100];

//after some computation
//vechicletwod got until [5];

//今、ソートを行う必要がありますが、ベクトルで行うことを好みます。vehicletwod のコンテンツを同じタイプのベクトルにコピーする方法

私は次のようなことをしました

vector<VehicleTwoD> sortVector;
sortVector = shapetwod;

しかし、sortVector = vehicletwod; で operator= が一致しないというエラーが発生します。

助けてくれてありがとう!

4

3 に答える 3

4

残念ながら、配列をループすることになります。

for (const auto& p : vechicletwod)
{
    sortVector.emplace_back(*p);
}

より良いオプションはvector<VehicleTwoD> sortVector;、最初から使用することです。

于 2012-10-30T05:45:39.877 に答える
1

タイプ *VehicleTwod のベクトル、つまり vector<*VehicleTwod> sortVector を作成するだけです。次に、配列を反復処理し、各要素を push_back できます。

おそらく次のようなものです:

typedef vector<*VehicleTwod> vecPtrVehicle2d;
typedef vecPtrVehicle2d::iterator vecPtrVehicle2dIter;

vecPtrVehicleWod sortVector;
int i, n = 100;

for (i=0; i<n; i++)
  sortVector.push_back(vechicletwod[i]);

ここだけのベクトル イテレータは必要ありません。私は習慣で行う傾向があります。

于 2012-10-30T05:57:01.043 に答える
0

あなたのタイプは矛盾しています。

VehicleTwod *vechicletwod[100];

は VehicleTwodポインタの配列を宣言しますが、ベクトルはメモリ アドレスではなく、実際の VehicleTwod オブジェクトを格納するように宣言されています。「*」なしで vechicletwod を初期化してみてください。

 VehicleTwod vechicletwod[100]; //array of actual objects

またはポインターを含むようにベクトルを変更します。

vector<VehicleTwoD*> sortVector;

型がうまくいくと、最初に試したのとまったく同じように「=」演算子を使用できます。

   sortVector = vehicletwod; //overloaded = operator in class vector
于 2012-10-30T05:42:52.003 に答える