我设计了一个带有更新函数的动态数组,该函数将原始内容深度复制到临时数组中,然后将大小加倍,然后将临时数组的内容放入新数组中。
这是功能:
T& operator[](const unsigned i)
{
if(i >= SIZE)
{
T *temp = new T[SIZE];
for(int i = 0; i< SIZE; ++i)
{
temp[i]=data[i];
}
delete[] data;
SIZE *= 2;
data = new T[SIZE];
for(int j = 0; j< SIZE; ++j)
{
data[j]=temp[j];
}
delete[] temp;
}
return data[i];
};
此函数适用于除字符串之外的所有数据类型:
Vector<string> s;
string str1 = "1";
string str2 = "2";
s[0] = str1;
s[1] = str2;
cout<< s[0]<< s[1]<< '\n';
然而,举例来说:
Vector<int> in;
for(i = 0; i < 11; i++){
in[i] = i;
}
for(i = 0; i < 11; i++){
cout<< "int test"<< '\n';
cout<< in[i]<< '\n';
}
更新工作完全正常。
你们谁都知道为什么?
谢谢。