如果数组中的点处的值为零,则以下过程应该是Item到数组。这样,如果我需要动态增长数组,我可以使用新数组元素创建新数组,将所有Items添加到数组,然后将新元素初始化为Zero,然后使用此代码填充该元素。当我打印数组但是我回来的所有内容都是MIN_VALUE很长一段时间。我错过了什么?
void CResizableArray::SetSize(long lngNewSize)
{
long* palngNewValues;
// Boundary Checks
if (lngNewSize < 0) lngNewSize = 0;
palngNewValues = new long[lngNewSize];
// Initialize empty items in the array to zero
InitializeArray(palngNewValues, lngNewSize);
// Populate the array
PopulateArray(palngNewValues, lngNewSize);
}
void CResizableArray::InitializeArray(long* &palngValues, long lngArraySize)
{
long lngIndex = 0;
// Initialize Array
for (lngIndex = 0; lngIndex < lngArraySize; lngIndex += 1)
{
// Is there anything in that spot?
if (*(palngValues + lngIndex) < 0)
{
*(palngValues + lngIndex) = 0;
}
}
// Delete Old array
delete[] m_palngValues;
m_palngValues = 0;
// Assign New array
m_palngValues = palngValues;
//// Assign Size
m_lngArraySize = lngArraySize;
}
long CResizableArray::GetSize()
{
return m_lngArraySize;
}
void CResizableArray::PopulateArray(long* &palngNewValues, long lngArraySize)
{
long lngIndex = 0;
// Populate array
cout << "Please Populate ----------\n" << endl;
// Test value to see if it functions correctly
*(palngNewValues + 1) = 5;
for (lngIndex = 0; lngIndex < lngArraySize; lngIndex += 1)
{
// Check if anything is in this spot
if (*(palngNewValues + lngIndex) == 0)
{
cout << "Enter value[ " << lngIndex << "]: ";
cin >> *(palngNewValues + lngIndex);
}
}
cout << "" << endl;
// Delete Old array
delete[] m_palngValues;
m_palngValues = 0;
// Assign the Values to the new array
m_palngValues = palngNewValues;
// Print
Print(m_palngValues, lngArraySize);
}
void CResizableArray::Print(long* palngValues, const long lngArraySize)
{
long lngIndex = 0;
cout << "Print ----------\n" << endl;
for (lngIndex = 0; lngIndex < lngArraySize; lngIndex += 1)
{
cout << "Value[ " << lngIndex + 1 << " ] = " << *(palngValues + lngIndex) << endl;
}
cout << "" << endl;
system("pause");
}