我有一個任務,要在一個陣列類中創建兩個函式,名為insert和print。Insert應該將元素添加到陣列的末尾,當我運行代碼時,我得到的輸出對第二個陣列來說看起來很好,但第一個陣列的輸出很奇怪。我真的不知道該怎么做,任何指示都有幫助。
#include <iostream>
使用 命名空間 std.com.cn>。
class Array //the array class
{
private:
//Data members capacity, size, and arr (a pointer that points to the first element of the array in the heap).
int capacity{}。
int size{};
int* arr{};
public:
Array(int capacity);//parameter。
Array();/default
~Array();/destructor。
void insert(int num)。
void print() const ;
};
void Array::insert(int num)
{
{
if (size == 0)
{
arr[0] = num;
size 。
return;
}
int index = 0;
while (num > arr[index] && index < size)
{
index 。
}
arr[index] = num;
size ;
}
}
void Array::print() const
{`在此輸入代碼`。
for (int i = 0; i < size; i )
{
cout << *(arr i)<<" "/span>。
}
delete[]arr;
}
Array::Array()
{
return;
}
/Destructor to clean up .
Array::~Array()
{
return;
}
//Parameter constructor。
Array::Array(int cap)
:capacity(cap)
{
arr = new int[capacity] 。
size = 0;
}
int main()
{
//創建一個容量為10的陣列。
Array array1(10)。
array1.insert(5)。
array1.insert(3)。
array1.insert(2)。
cout << "Array 1: " << endl;
array1.print()。
cout << endl;
//創建另一個陣列。
Array array2(20)。
for (int i = 0; i < 20; i )
{
array2.insert(i 10)。
}
cout << "Array 2: " << endl;
array2.print()。
cout << endl;
return 0;
}
uj5u.com熱心網友回復:
你沒有在
中初始化分配的陣列arr = new int[容量]。
所以它的內容是垃圾。
然后在你的insert()中,你試圖按升序插入元素,但你沒有把現有的元素往上移,你只是覆寫了它們。
你的print列印了這個垃圾。
第二個測驗案例是有效的,因為你的元素已經排序了,所以不需要移動。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/314130.html
標籤:
下一篇:使一個物體的向量相互獨立
