string *level_two;
我在课堂上声明了这个数组。我在类函数中动态分配了它的大小。
level_two = new string [size];
我需要更改它的大小主要是增加保留内容的大小,比如大小是5,我的数组是动态声明为5的大小,并且在位置2和位置3有一些字符串我想增加它的大小取决于大小的变化,位置2和3处的弦也应该没有变化。
我怎样才能做到这一点?
第二部分:
int temp=0;
temp= final_hash_index_one;
final_hash_index_one = sum % number_of_keys_to_be_hashed;
sum = 0;
cout<<"final_hash_index_one: "<<final_hash_index_one<<endl;
if(final_hash_index_one>temp)
{
string *tmp = new string[final_hash_index_one+1];
std::copy(level_two, tmp, final_hash_index_one+1);
delete [] level_two;
level_two = tmp;
}
if(temp>final_hash_index_one)
{
string *tmp = new string[temp+1];
std::copy(level_two, tmp, final_hash_index_one+1);
delete [] level_two;
level_two = tmp;
}
level_two = new string [final_hash_index_one+1];
level_two[final_hash_index_one] = file_se_uthao;
tab_obj[return_structure_index].z = level_two;
答案 0 :(得分:7)
Canonical C ++回答:
使用std::vector<string>
1 而不是进行手动内存管理(即不要使用new
和delete
)。 e.g:
std::vector<std::string> level_two(size);
...
level_two[0] = some_string;
...
level_two.resize(different_size);
您还可以完全避免显式调整大小:
std::vector<std::string> level_two;
...
level_two.push_back(some_string);
level_two.push_back(other_string);
level_two.push_back(another_string);
...
C-with-classes回答:
您需要创建一个新数组,传输内容,然后删除旧数组:
string *tmp = new string[different_size];
std::copy(level_two, level_two+size, tmp);
delete [] level_two;
level_two = tmp;
<子> 1。或std::list
或其他任何内容,具体取决于您的要求。