比如说我们有这个:
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会格式化我的原始数据,加上它对字符串很有趣。
只是抬头:我不想使用任何形式的链接列表,向量或那种性质的东西。
答案 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>>
来做到这一点。