下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+編程練習(xí)2:動(dòng)態(tài)數(shù)組(Dynamic Array)類(lèi)的圭寸裝練習(xí)(續(xù))問(wèn)題現(xiàn)在實(shí)現(xiàn)的類(lèi)基本滿(mǎn)足一個(gè)“動(dòng)態(tài)數(shù)組”的要求,用戶(hù)能很方便的使用它。但是,這個(gè)動(dòng)態(tài)數(shù)組的使用也有問(wèn)題,比如,每當(dāng)數(shù)組的元素個(gè)數(shù)發(fā)生變化時(shí),總是要發(fā)生內(nèi)存的釋放和申請(qǐng)的操作,這個(gè)使得操作效率上非常低效,并且很容易產(chǎn)生內(nèi)存碎片。想象一下如果用戶(hù)是不斷用push_back()函數(shù)來(lái)增加10000個(gè)元素,程序是如何的運(yùn)行?如何能改進(jìn)它呢?一個(gè)想法就是預(yù)先多分配一些內(nèi)存,然后在相當(dāng)一段時(shí)間內(nèi),當(dāng)數(shù)組的元素個(gè)數(shù)發(fā)生變化時(shí),不用重新申請(qǐng) 內(nèi)存空間,數(shù)組也能繼續(xù)使用。這樣就提高了效率。對(duì)于機(jī)器算法中,“時(shí)間”和“空間”的矛盾總是存在的
2、:存儲(chǔ)多一點(diǎn),運(yùn)行就快些;存儲(chǔ)少了,運(yùn)行就慢些。在這里就體現(xiàn)了,這樣處理是用空間換時(shí)間。雖然在內(nèi)存空間上是“浪費(fèi)” 了部分的空間,但是在很長(zhǎng)一段 時(shí)間里,只要空間沒(méi)有發(fā)生變化,運(yùn)行的時(shí)間復(fù)雜度就恒定的。只有當(dāng)現(xiàn)有的空間不夠用時(shí),才發(fā)生內(nèi)存的 重新申請(qǐng)和釋放操作。最簡(jiǎn)單的增長(zhǎng)方法就是增長(zhǎng)一倍,即乘以2,這樣內(nèi)存分配的大小就是 2的幕次方。因此,我們加上一個(gè) m_nMax數(shù)據(jù),用以存儲(chǔ)所申請(qǐng)到的內(nèi)存空間大小,而m_nSize才真正記錄這個(gè)數(shù)組的元素個(gè)數(shù)。類(lèi)的接口如下:class DArrayprivate:double*m_pData;/存放數(shù)組的動(dòng)態(tài)內(nèi)存指針intm_nSize;/數(shù)組的元素個(gè)數(shù)
3、intm_nMax;/預(yù)留給動(dòng)態(tài)數(shù)組的內(nèi)存大小 private:void Init();/ 初始化void Free();/釋放動(dòng)態(tài)內(nèi)存in li ne intIn validateI ndex(i nt nln dex);判斷下標(biāo)的合法性public:DArray();/缺省構(gòu)造函數(shù)DArray(int nSize, double dV alue = 0); /其他構(gòu)造函數(shù),設(shè)置一定數(shù)組大小,并設(shè)置所有元素為0;當(dāng)然還可以定義其他不同參數(shù)的構(gòu)造函數(shù),以方便用戶(hù)使用DArray(const DArray& arr);/拷貝構(gòu)造函數(shù)(最好為所有包含動(dòng)態(tài)分配成員的類(lèi)都提供拷貝構(gòu)造函數(shù))DA
4、rray();/析構(gòu)函數(shù)voidPrint();/ 輸出顯示所有數(shù)組元素的值intGetSize();/ 獲取數(shù)組大小(元素個(gè)數(shù))intSetSize(int nSize);/ 重新設(shè)置數(shù)組的大小。 注:若 nSize 小于原數(shù)組大小, 可截?cái)嗳∏?nSize個(gè)元素作為新數(shù)組的元素;若nSize 大于原數(shù)組大小,新增的元素的值設(shè)置缺省值0 即可double double intGetAt(int nIndex); / 獲取某個(gè)元素operator (int nln dex) con st;重載操作符,以便像傳統(tǒng)數(shù)組那樣通過(guò)ak來(lái)獲取兀素值SetAt(int nIndex, double dV
5、alue); / 設(shè)置某個(gè)元素的值int int intPushBack(double dValue);/ 追加一個(gè)新的兀素到數(shù)組末尾DeleteAt(int nlndex);/ 從數(shù)組中刪除一個(gè)兀素lnsertAt(int nlndex, double dValue);/ 插入一個(gè)新的兀素到數(shù)組中DArray &DArray:operator = (const DArray& array); / 重載賦值操作符號(hào) "=" ;注意,在這里只增加了一個(gè)數(shù)據(jù) m_nMax ,其他的所有函數(shù)接口都沒(méi)有發(fā)生改變!對(duì)用戶(hù)來(lái)將,仍然是按照以前的習(xí)慣使用接口函數(shù)來(lái)操作動(dòng)態(tài)數(shù)組,但是本質(zhì)上這個(gè)動(dòng)態(tài)數(shù)組的操作效率大大是提高了!作業(yè)要求完成滿(mǎn)足上述接口的動(dòng)態(tài)數(shù)組 (Dynamic array) 的程序,遞交整個(gè)工程源文件; 嚴(yán)格遵循基本的編程規(guī)范和風(fēng)格; 體會(huì)類(lèi)的接口確定了,其實(shí)現(xiàn)可以不一樣:用戶(hù)只跟類(lèi)(對(duì)象)的接口打交
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 七大方言語(yǔ)音的特點(diǎn)
- 《常見(jiàn)豬病及其防治》課件
- 幼兒園課件垃圾分類(lèi)
- 湖南省長(zhǎng)沙市雨花區(qū)2024-2025學(xué)年高一上學(xué)期期末考試政治試題(含答案)
- 《面向世界的眼光》課件
- 飲用水源地水質(zhì)監(jiān)測(cè)及風(fēng)險(xiǎn)防控能力項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-申批備案
- 2025年全球市場(chǎng)及大類(lèi)資產(chǎn)展望:從特朗普交易到基本面拐點(diǎn)
- 單位管理制度收錄大全人力資源管理篇
- 中國(guó)隱形眼鏡及護(hù)理液行業(yè)投資潛力分析及行業(yè)發(fā)展趨勢(shì)報(bào)告
- 《營(yíng)銷(xiāo)經(jīng)理飚升》課件
- 銷(xiāo)售總監(jiān)年度總結(jié)規(guī)劃
- 生物安全柜的使用及維護(hù)培訓(xùn)
- 《NOIP圖的基礎(chǔ)算法》課件
- 《建筑工程QC課題》課件
- 病歷質(zhì)控流程
- 政府采購(gòu)評(píng)審專(zhuān)家考試試題庫(kù)(完整版)
- 合作投資酒店意向合同范例
- 安全教育教案大班40篇
- 叉車(chē)工安全培訓(xùn)資料
- 九年級(jí)英語(yǔ)教學(xué)反思
- 外研新標(biāo)準(zhǔn)初中英語(yǔ)七年級(jí)上冊(cè)冊(cè)寒假提升補(bǔ)全對(duì)話(huà)短文練習(xí)三附答案解析
評(píng)論
0/150
提交評(píng)論