动态数组可以为除字符串之外的所有数据类型更新为更大的大小

时间:2017-04-22 05:35:52

标签: c++ string c++11 deep-copy

我设计了一个带有更新函数的动态数组,该函数将原始内容深度复制到临时数组中,然后将大小加倍,然后将临时数组的内容放入新数组中。

这是功能:

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';
}

更新工作完全正常。

你们谁都知道为什么?

谢谢。

0 个答案:

没有答案