c 動態陣列構造及應用

2021-05-27 10:20:38 字數 2674 閱讀 3788

/*

檔名稱:arrayclass.h

功能:自定義陣列型別標頭檔案

用於動態陣列應用,

char型別指標陣列

by adengou 2011.8.13

*///檔案頭

#ifndef array_class

#define array_class

#include

#include

#ifndef  null

const int null =0;

#endif //null

using namespace std;

enum errortype;

char *errormsg=;

//類模板

template

class array

;//類成員函式實現 

//模板函式error實現輸出錯誤資訊功能

template

void array::error(errortype error,int badindex=0) const

size=sz;//將元素個數賦值給變數size

alist=new t[size];//動態分配size個t型別空間

if (alist==null)//如果分配記憶體不成功,輸出錯誤資訊

}//析構函式

template

array::~array(void)

//拷貝建構函式

template

array::array(const array&x)

//從物件x複製陣列元素到本物件

t*srcptr=x.alist;//x,alist是物件x的陣列首位址

t*destptr=alist;//alist是本對像中的陣列首位址

while(-1)

}//過載"="運算子,將物件rhs賦值給本物件,實現物件之間的整體賦值

template

array& array::operator=(const array&rhs)

size=n;//記錄本物件的陣列大小

}//從rhs向本物件複製元素

t *destptr=alist;

t *srcptr=rhs.alist;

while(n--)

return *this;

}//過載下標操作符,實現與普通陣列一樣通過下標訪問元素,並且具有越界的可能

template

t & array::operator(int n)

//返回下標為n的陣列元數

return alist[n];

}//過載指標轉換操作符,將array類的物件名轉換為t型別的指標

//指向當前物件中的私有陣列

//因而可以象使用普通陣列首位址一樣使用array的物件名

template

array::operator t *(void) const

//將陣列大小修改為sz

template

void array::resize(int sz)

//如果指定的大小與原有大小一樣,什麼也不做

if(sz==size)

//申請新的陣列記憶體,並測試是否申請成功

t *newlist= new t[sz];

if (newlist==null)

//將sz與size中較小的乙個賦值給n

int n=(sz<=size)?sz:size;

//將原有陣列中前n個元素複製到新陣列中

t *srcptr=alist;//原陣列alist的首位址

t *destptr=newlist;//新陣列newlist的首位址

while(n--)

//刪除原陣列

deletealist;

//使alist 指向新陣列,並更新size

alist =newlist;size=sz;

}/*******************************/

#endif  //標頭檔案別忘了這句

/*******************************/

/**********動態陣列類的應用範例************/

/*檔名:primenumber.cpp

運用陣列類求小於或等於n的所有素數

by adengou 2011.8.13

win7 vs 2010編譯通過

*/#include

#include

#include

#include "arrayclass.h"//動態陣列類的標頭檔案

using namespace std;

int main()

//如果輸入的數字大於陣列長度,則陣列長度加長10

if (i%2==0)//被2整的數不是質數

j=3;//賦j初始值為3

/*判斷當前數i是否是質數(能被從2算起到該數的平方根範圍內的數整除不是質數,反之,則是素數*/

while(jsqrt((double)i)) //如果j的值大於該數的平方根,說明該數是素數,將該數存入陣列。

}/*輸出n以內的質數*/

for (i=0;i}cout

return 0;

}/**************************************/

c08 基礎,陣列構造演算法

1.sizeof hello 6 放入常量區,編譯器不用頻繁讀取記憶體 2.sizeof 型別 只關心型別而不關心內容 int i 0 sizeof 1 i 4 編譯執行正常 3.只有有型別的指標才能通過指標值確定指標指向的內容 4.陣列的引用 int p 10 int a 10 不使用 5.voi...

Python陣列構造的坑

今天寫python 的時候遇到了乙個大坑 問題是這樣的,我需要建立乙個二維陣列,如下 m n 3test 0 m nprint test test 輸出結果如下 test 0,0,0 0,0,0 0,0,0 是不是看起來沒有一點問題?一開始我也是這麼覺得的,以為是我其他地方用錯了什麼函式,結果這麼一...

基於XML字尾陣列構造演算法

基於 xml字尾陣列構造演算法 1 引言 xml extensible markup language 是由w3c開發的乙個標準,xml 1.0是全球接受的規範。xml文件是乙個既包含資料,又包含描述資料結構標記的純文字文件。任何兩個要交換xml資料的應用程式都能進行交換,與平台或程式語言無關。因此...