ここで多くのトピックを検索しましたが、正確に答えてくれなかったようです。
C++ で配列の動的な再割り当てを行おうとしています。STL(ベクトルなど)が明示的に禁止されている宿題でこれを使用する必要があるため、STLライブラリからは何も使用できません。
これまでのところ、次のようなコードで詳しく説明しようとしました。
int * items = new int[3]; //my original array I'm about to resize
int * temp = new int[10];
for (int i = 0; i < 3; i++) temp[i] = items[i];
delete [] items; //is this necessary to delete?
items = new int [10];
for (int i = 0; i < 10; i++) items[i] = temp[i];
delete [] temp;
これは機能しているように見えますが、私が気になるのは反復回数が多すぎることです。これをもっと賢くすることはできませんか?明らかに、私はこれよりもはるかに大きな配列で作業しています。残念ながら、私は配列を扱う必要があります。
編集:items = temp;
代わりにやろうとすると
for (int i = 0; i < 10; i++) items[i] = temp[i];
すべての要素を試してみるとstd::cout
、最初の 2 つの要素が失われますが、valgrindはそれらを正しく出力します。