僅供參考,不準粘貼複制交作業,謝謝配合
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SZslWbz9CX0xWdhZWZk9CX09Wbl9lcvRXakVGa49CXy9GdpRWZoh3LcRXZu5ibkN3Yuc2bsJmLjlGdhR3cvw1LcpDc0RHaiojIsJye.gif)
(要交的話,最起碼稍微改改好不好!)
#include <iostream>
#include <string>
using namespace std;
class DynamicArray
{
public:
DynamicArray(int aSize=10)
{
elem=new int[m_isize];
m_ilength=0;
m_isize=10;
}
~DynamicArray()
{
delete []elem;
m_ilength=0;
m_isize=0;
}
DynamicArray(const DynamicArray &aRef)
{
m_ilength=aRef.m_ilength;
m_isize=aRef.m_isize;
if (aRef.elem)
{
elem=new int[m_isize];
for (int i=0;i<m_ilength;i++)
{
elem[i]=aRef.elem[i];
}
}
}
void assign(const DynamicArray &aRef)// 用一個動态數組的對象的值去修改另外一個對象
{
int *elemtent; //防止空間太大或太小
elemtent=new int[m_isize];
delete[]elem;
elem=elemtent;
while(aRef.elem)
(++*elem)=( ++ *aRef.elem );
m_ilength=aRef.m_ilength;
m_isize=aRef.m_isize;
}
void append(int aValue)//數組最後插入元素
{
if(m_ilength >= m_isize) //資料存儲滿
{
int * elemtent; //申請新空間
elemtent = new int[m_isize+10];
for(int i = 0;i < m_ilength;i++) //将原來資料轉移到新空間
{
elemtent[i] = elem[i];
}
delete []elem; //銷毀原來的空間
elem= elemtent; //指向新申請的空間
m_isize = m_isize + 10;
}
elem[m_ilength] = aValue;
m_ilength++;
}
bool remove(int aIndex) //删除下标為aIndex的數組元素
{
if(aIndex<0||aIndex>m_ilength)
return false;
for (int i=aIndex;i<m_ilength-1;i++)
elem[i]=elem[i+1];
m_ilength=m_ilength-1;
m_isize=m_isize;
return true ;
}
bool insert( int aIndex, int aVal )//在aIndex位置的元素後面插入新元素
{
if(aIndex<0||aIndex>=m_ilength)
return false;
if(m_ilength >= m_isize) //資料存儲滿
{
int *elemtent; //申請新空間
elemtent = new int[m_isize+10];
for(int i = 0;i < m_ilength;i++) //将原來資料轉移到新空間
{
elemtent[i] = elem[i];
}
delete []elem; //銷毀原來的空間
elem = elemtent; //指向新申請的空間
m_isize = m_isize + 10;
}
for(int i = m_ilength - 1; i > aIndex;i--) //循環前移
{
elem[i + 1] = elem[i];
}
elem[aIndex + 1] = aVal;
m_ilength++;
return true;
}
bool remove(int aIndex, int aValue) //從下标為aIndex的元素開始查找,删除所有值為aValue的元素
{
if(aIndex<0||aIndex>=m_ilength)
return false;
int j=0;
int i=aIndex;
for (i;elem[i];i++)
{
if(elem[i]==aValue)
elem[i]=elem[i+1];
j++;
}
m_ilength-=j;
m_isize=m_isize;
return true;
}
const int *begin() const //傳回第一個數組元素的指針
{
return elem;
}
const int *end() const //傳回最後一個元素的指針
{
return &elem[m_ilength-1];
}
int at(const int aIndex) const //傳回下标為aIndex的數組元素
{
if(elem&&aIndex<m_ilength)
return elem[aIndex];
return 0;
}
void display()
{
while(elem)
{
cout<<elem;
elem++;
}
}
private:
int *elem;
int m_ilength; //數組中元素的個數
int m_isize; //數組的總長度
};