templategenericarray::genericarray(int length):size(length),count(0)
使用模板定義替換genericarray宣告,使用模板成員函式替換genericarray的成員函式。定義乙個空陣列,初始化陣列長度。
templatevoid genericarray::printarr()const
實現對陣列的輸出,當陣列中存在資料即count>0時,輸出該陣列中的元素。
templatevoid genericarray::headaddarr(type ar)
items[0] = ar;//對第乙個資料賦值
}}
實現頭元素的新增功能,即對陣列頭進行插值,當陣列非滿即可新增元素,當插入頭元素時,要先將最後乙個元素賦給下乙個空資料,然後一一向後賦值,即將上乙個陣列賦給下乙個陣列,最後將type類的資料賦給陣列第乙個元素即可。
templatevoid genericarray::midaddarr(int index, type elem)
//函式引數為索引和插入的元素
items[index] = elem;
}}
中間插值,先根據索引找到對應元素的下標值,通過指標找到對應元素的位址,按照上述頭元素插值的方法,將0換成索引index即可。
templatevoid genericarray::tailaddarr(type elem)
}
尾部插值就較容易了,先判斷資料是否非滿,滿足條件通過指標找到最後乙個資料的下乙個位置對其賦值即可,記得都要對資料進行更新。
templatevoid genericarray::delheadarr()
實現對陣列頭、尾、索引的刪除操作,方法與插入類似,不同的是要將資料移,比如對第乙個資料的刪除操作,直接將下乙個資料賦值給上乙個資料即可,對於中間資料的刪除操作,則是根據索引值找到對應元素的位置,然後從這個位置開始對後面的資料進行資料操作,對頭和尾的刪除是對索引元素刪除的特例。
templatevoid genericarray::getarr(int index)
獲取索引元素,若陣列非空,索引值不超出資料存在範圍,即可直接找到對應的陣列元素。
templatevoid genericarray::modarr(int index, type elem)
索引修改元素,直接根據索引值找到該元素並對其賦值即可。
templatevoid genericarray::judarr(type elem)
cout << index << endl;
}}
判斷陣列是否包含某元素,將該資料與陣列中的資料一一比較輸出對應下標即可。
int main()
主函式中先定義乙個類的物件,然後使用類模板定義陣列中元素的型別(這裡假設為int型),然後用物件呼叫成員函式實現相應的功能。 c 利用模板類實現氣泡排序
模板是一種對型別進行引數化的工具,通常有兩種形式 函式模板和類模板。函式模板針對僅引數型別不同的函式 類模板針對僅資料成員和成員函式型別不同的類。函式模板的格式 template 返回型別 函式名 引數列表 1 template和class是關鍵字,class可以用typename關鍵字代替,在這裡...
利用抽象類實現模板設計模式
有時候,我們會碰到另外的一種情況,比如,銀行利息的計算,都是利率乘以本金和存款時間,但是,各種存款方式計算利率的方式的不同,一般而言,定期的存款利率比活期的利率要高 而定期的時間越長,它的利率也越高。因此,我們在設計 銀行賬戶 這個類的時候,我們可以將計算利息這個方法定義成抽象方法,然後,再在各種不...
利用模板實現vector類,異常處理
題目描述 參考c vector類模板,設計實現自己的cvector向量類模板,完成下列基本功能 構造 析構 size push back和下標訪問,在通過下標訪問越界時丟擲異常。編寫測試程式,利用該類模板完成乙個直譯器,它接受命令,執行相應操作。本題不可使用stl vector,所需記憶體通過動態分...