随着输入数据的增加,数组大小动态增长。
#include <iostream>
using namespace std;
int *growArray(int* p_values, int cur_size);
int main()
{
int next_element = 0;
int size = 10;
int* p_values = new int[size];
int val;
cout << "Please enter a number: ";
cin >> val;
while (val > 0)
{
if (size == next_element + 1) //资源紧张,扩增数组大小
{
p_values = growArray(p_values, size);
size *= 2;
}
p_values[next_element++] = val;
cout << "Please enter a number ( or 0 to exit): ";
cin >> val;
}
for (int i = 0; i < next_element; i++)
{
cout << p_values[i] << " ";
}
cout << endl;
}
//数组大小增长,倍增
int* growArray(int* p_values, int cur_size)
{
int *p_new_values = new int[cur_size * 2];
for (int i = 0; i < cur_size; i++) //复制原数组内容
{
p_new_values[i] = p_values[i];
}
delete []p_values; //释放内存
return p_new_values;
}
大胆猜想,小心求证!——胡适