C ++言語はC ++の配列は、C言語スタイルの伝統的な配列を使用することができますので、C言語と互換性があります。しかし、多くの時間でC言語形式の配列は、非常に使いやすいではありません。C ++では代わりにベクターを用いてもよいです。
この記事では、Vector、文字列と文字配列の関係のみを考慮します。
あなたは、文字列を使用している場合は、文字列の使用を検討していますが、唯一の配列を考慮した場合、あなたは代わりとしてのchar配列や文字列のベクトルを使用する必要があり、結局、同じではありません。
ベクターと互換char配列:
1、ベクトル配列
float arrHeight[] = { 1.68,1.72,1.83,2.05,2.35,1.78,2.1,1.96 };
vector<float> vecHeight(arrHeight, arrHeight+sizeof(arrHeight)/sizeof(float));
図2は、ベクター配列トランスファー
ベクターデータが連続内部記憶空間に格納されているため、ベクタートランスフェクトされたアレイの事実は、最初のデータ及びアドレスデータのベクトルの長さを取得する必要があります。データをコピーする場合のみ、パラメータ渡しは、何も操作せずに、アドレスを直接送信することができる場合は、メモリコピー機能「のmemcpy」を借りることができます。例えば:
float *buffer = new float[sizeof(arrHeight)];
if (!vecHeight.empty())
{
memcpy(buffer, &vecHeight[0], vecHeight.size()*sizeof(float));
}
3.アプリケーションの推奨事項
図1に示すように、実装は、動的配列などのベクター:メモリのブロックを事前に割り当て、その後、十分ではない感情、メモリの大きなブロックの再分配、及び、自動的に前新しいメモリブロックにデータをコピーするであろう場合。
実装が格納されるデータの長さを知っている場合、したがって、効率のために、十分なメモリを開く機能をリサイズ、後続のメモリコピーを防止するために使用されてもよいです。