如何在不知道原始数组大小的情况下增加动态数组(C ++)的大小?

时间:2014-09-21 04:16:23

标签: c++ size dynamic-arrays

比如说我们有这个:

string* p;
p = new string[2];
p[0] = "Aa";
p[1] = "Bb";

我的理解:我需要创建一个临时动态数组来存储p具有的内容,删除p,然后创建一个新的p,其行1大于temp,然后将temp复制到p。

我不明白:如果不知道原始行大小(在这种情况下为2)并且仍然保留原始数据,我将如何增加p的大小。我已经阅读过如(sizeof(array)/ sizeof(dataType))这样的技巧,但由于我有一个动态数组,我不知道如何找到它的大小。 realloc会格式化我的原始数据,加上它对字符串很有趣。

只是抬头:我不想使用任何形式的链接列表,向量或那种性质的东西。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

string* p;
p = new string[2];
p[0] = "Aa";
p[1] = "Bb";

string* reallocated = new string[3];
std::copy(p,p+2,reallocated); // Save your original values
delete[] p; // release formerly allocated memory
p = reallocated; // Assign newly allocated memory
p[2] = "Cc"; // Add some additional element

无论如何,我不能仅仅使用std::vector<std::string>>来做到这一点。