C++編程練習2動態(tài)數(shù)組DynamicArray類的封裝練習_第1頁
C++編程練習2動態(tài)數(shù)組DynamicArray類的封裝練習_第2頁
C++編程練習2動態(tài)數(shù)組DynamicArray類的封裝練習_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、C+編程練習2:動態(tài)數(shù)組(Dynamic Array)類的圭寸裝練習(續(xù))問題現(xiàn)在實現(xiàn)的類基本滿足一個“動態(tài)數(shù)組”的要求,用戶能很方便的使用它。但是,這個動態(tài)數(shù)組的使用也有問題,比如,每當數(shù)組的元素個數(shù)發(fā)生變化時,總是要發(fā)生內(nèi)存的釋放和申請的操作,這個使得操作效率上非常低效,并且很容易產(chǎn)生內(nèi)存碎片。想象一下如果用戶是不斷用push_back()函數(shù)來增加10000個元素,程序是如何的運行?如何能改進它呢?一個想法就是預先多分配一些內(nèi)存,然后在相當一段時間內(nèi),當數(shù)組的元素個數(shù)發(fā)生變化時,不用重新申請 內(nèi)存空間,數(shù)組也能繼續(xù)使用。這樣就提高了效率。對于機器算法中,“時間”和“空間”的矛盾總是存在的

2、:存儲多一點,運行就快些;存儲少了,運行就慢些。在這里就體現(xiàn)了,這樣處理是用空間換時間。雖然在內(nèi)存空間上是“浪費” 了部分的空間,但是在很長一段 時間里,只要空間沒有發(fā)生變化,運行的時間復雜度就恒定的。只有當現(xiàn)有的空間不夠用時,才發(fā)生內(nèi)存的 重新申請和釋放操作。最簡單的增長方法就是增長一倍,即乘以2,這樣內(nèi)存分配的大小就是 2的幕次方。因此,我們加上一個 m_nMax數(shù)據(jù),用以存儲所申請到的內(nèi)存空間大小,而m_nSize才真正記錄這個數(shù)組的元素個數(shù)。類的接口如下:class DArrayprivate:double*m_pData;/存放數(shù)組的動態(tài)內(nèi)存指針intm_nSize;/數(shù)組的元素個數(shù)

3、intm_nMax;/預留給動態(tài)數(shù)組的內(nèi)存大小 private:void Init();/ 初始化void Free();/釋放動態(tài)內(nèi)存in li ne intIn validateI ndex(i nt nln dex);判斷下標的合法性public:DArray();/缺省構造函數(shù)DArray(int nSize, double dV alue = 0); /其他構造函數(shù),設置一定數(shù)組大小,并設置所有元素為0;當然還可以定義其他不同參數(shù)的構造函數(shù),以方便用戶使用DArray(const DArray& arr);/拷貝構造函數(shù)(最好為所有包含動態(tài)分配成員的類都提供拷貝構造函數(shù))DA

4、rray();/析構函數(shù)voidPrint();/ 輸出顯示所有數(shù)組元素的值intGetSize();/ 獲取數(shù)組大小(元素個數(shù))intSetSize(int nSize);/ 重新設置數(shù)組的大小。 注:若 nSize 小于原數(shù)組大小, 可截斷取前 nSize個元素作為新數(shù)組的元素;若nSize 大于原數(shù)組大小,新增的元素的值設置缺省值0 即可double double intGetAt(int nIndex); / 獲取某個元素operator (int nln dex) con st;重載操作符,以便像傳統(tǒng)數(shù)組那樣通過ak來獲取兀素值SetAt(int nIndex, double dV

5、alue); / 設置某個元素的值int int intPushBack(double dValue);/ 追加一個新的兀素到數(shù)組末尾DeleteAt(int nlndex);/ 從數(shù)組中刪除一個兀素lnsertAt(int nlndex, double dValue);/ 插入一個新的兀素到數(shù)組中DArray &DArray:operator = (const DArray& array); / 重載賦值操作符號 "=" ;注意,在這里只增加了一個數(shù)據(jù) m_nMax ,其他的所有函數(shù)接口都沒有發(fā)生改變!對用戶來將,仍然是按照以前的習慣使用接口函數(shù)來操作動態(tài)數(shù)組,但是本質(zhì)上這個動態(tài)數(shù)組的操作效率大大是提高了!作業(yè)要求完成滿足上述接口的動態(tài)數(shù)組 (Dynamic array) 的程序,遞交整個工程源文件; 嚴格遵循基本的編程規(guī)范和風格; 體會類的接口確定了,其實現(xiàn)可以不一樣:用戶只跟類(對象)的接口打交

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論