1

C++でベクトルを配列に変換する方法」を理解しています

double のベクトル (NON POINTER TYPE) を配列に変換する方法を回答します。

私の要件:: (CustomClass ポインターのベクトル) を (CustomClass ポインターの配列への CustomClass ポインター) に変換するには。

次のコードは「(ポインターのベクトル) --> (CustomClass ポインターの配列へのポインター)」を意味しますか?

std::vector <CustomClass*> vectorObject(SizeOfVector);  // Here each element of the vector //is a pointer to CustomClass object.
CustomClass* customClassArray = &vectorObject[0];

間違っている場合は修正してください。コードスニペットで親切に助けてください。

前もって感謝します。

4

3 に答える 3

2

Vectorは、配列の一種のラッパーであり、配列のすべての機能を提供すると同時に、配列の大きさやその他の多くの便利な機能を知って、配列を縮小して拡張することもできます。std vectorの要件の1つは、そのデータが配列のように連続して格納されることです。この要件があるため、タイプに関係なく、最初の要素のアドレスを取得することで要素の配列を取得できます。

std::vector <CustomClass*>vectorObject配列を取得するためのCustomClassポインターのベクトルがあることを意味します

CustomClass **Array = &vectorObject[0]これで、ベクトルのオフセット0にある連続するデータセグメントを取得し、カスタムクラスのポインターポインターを割り当てました。配列とポインターはcとc ++で深く接続されていることを思い出してください。これで、配列であるかのようにポインターポインターにアクセスできます。

CustomClass * FirstEle = Array[0];

于 2012-11-01T17:37:14.730 に答える
2

実際にvectorObject[0]はです。CustomClass *&vectorObject[0]CustomClass **

ここで、vector<>要素を順番に格納するという興味深い仮定を立てています。あなたはおそらく正しいので、コードは機能するはずです。

編集: Ben Voigt のコメントによると、の連続性vector<>は標準で保証されているため、この方法は 100% 機能します。

于 2012-11-01T17:35:43.490 に答える
2

はい、ベクトルはメモリ内で連続している必要があるため、式「&vectorObject[0]」は、ポイントできる最初の要素のアドレスを返します。

于 2012-11-01T17:35:44.270 に答える