[問題] resize dynamic allocated array (C++)
由於程式的執行中
有幾個地方有可能需要將dynamic allocate的array做resize
我知道C有reallocate的功能
但是我不太想用C(純粹是我龜毛而已) 剛好又規定不能用STL
查了好久 C++好像沒resize的語法
於是自己寫了一個
但是我不知道這樣寫行不行(因為擔心用不同compiler的話不知道會不會出錯)
有錯的話請各位大大盡量鞭~
//main function 在程式最後面
#include <iostream>
using namespace std;
int size = 5;
class cla
{
public:
void f();
private:
void resize(int *&, int);
int *a1;
};
void cla::f()
{
a1 = new int [size];
for(int i = 0 ; i < size ; i++) //給值
a1[i] = i+100;
resize(a1,size+1);
/* 印出結果 結果應該為100 101 102 103 104 -1,而之後全部亂碼*/
for(int i = 0 ; i < 15 ; i++)
cout<<a1[i]<<" ";
}
void cla::resize(int *&arr, int len)
{
int* newArr = new int[len];
for(int i = 0 ; i < len ; i++) //只是隨便給個初值
newArr[i] = -1;
memcpy( newArr, arr, size * sizeof(int) );//將原本array的值copy到新array
size = len; //重新定義array的大小
delete [] arr;
arr = newArr;
}
int main()
{
cla a;
a.f();
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.190.206
→
03/28 03:51, , 1F
03/28 03:51, 1F
→
03/28 09:49, , 2F
03/28 09:49, 2F
→
03/28 09:50, , 3F
03/28 09:50, 3F
推
03/28 12:57, , 4F
03/28 12:57, 4F
→
03/28 12:57, , 5F
03/28 12:57, 5F
→
03/28 13:27, , 6F
03/28 13:27, 6F
推
03/28 14:03, , 7F
03/28 14:03, 7F
→
03/28 14:04, , 8F
03/28 14:04, 8F
→
03/28 14:04, , 9F
03/28 14:04, 9F
→
03/28 14:05, , 10F
03/28 14:05, 10F
→
03/28 14:09, , 11F
03/28 14:09, 11F
→
03/28 14:35, , 12F
03/28 14:35, 12F