題目描述
參考c++ vector類模板,設計實現自己的cvector向量類模板,完成下列基本功能: 構造、析構、size、push_back和下標訪問,在通過下標訪問越界時丟擲異常。編寫測試程式,利用該類模板完成乙個直譯器,它接受命令,執行相應操作。本題不可使用stl vector,所需記憶體通過動態分配獲得,所需記憶體擴充套件不可頻繁發生。
輸入描述
輸入命令有5種 :int 整數 代表開始建立整數向量 (整數為向量初始大小);string 整數 代表開始建立string向量;push物件 代表在向量尾追加物件; put 下標 物件 代表需將物件放入向量下標處;fetch 下標 代表取並列印向量下標處物件;當下標越界時丟擲異常並顯示invalid index:下標;quit代表本佇列處理結束。每個佇列以int或string開始,以quit結束;所有命令均小寫。
輸出描述
每個向量從建立到結束輸出佔一行; 各輸出物件前含乙個空格。
樣例輸入
解決:注意第二個輸入的整數並不是初始向量的長度,而是已經被占用的向量的長度,例如一開始輸入10,push的資料的下標就是11,已經被占用的向量元素的值可以自己確定,string用「」占用,int用0占用
**注意:catch如果引數是字串,注意const str和str的區別,如果丟擲const str異常catch str是無法捕捉的
**實現:
#include#includeusing namespace std;
templateclass vector
;templatevector::vector()
templatevoid vector::push_back(elemtype x)
templateelemtype vector::begin()
templateelemtype vector::end()
templateint vector::size()
templateelemtype &vector::operator(int x)
templatevector::~vector()
int main()
else if(s1=="put")
else if(s1=="fetch")
else if(s1=="put")
else if(s1=="fetch")
catch(int x)}}
} }}
利用模板實現Stack
說起stack,可能很多人都寫過,但是這是我第一次寫,而且出錯率特別高 那麼首先看看什麼是stack 棧stack是乙個 先進後出 的容器 a 棧是只能在某一端插入和刪除的特殊線性表。b 先堆進來的壓在底下,隨後乙個乙個往上堆。取走時,只能從上面乙個乙個取。讀和取都在頂部進行,底部一般是不動的。c ...
c 模板實現vector和list
h檔案 pragma once include include includeusing namespace std templateclass vector 拷貝構造 vector const vector v size v.size capacity v.capacity 賦值運算子的過載 ve...
用模板實現順序表Vector
pragma once include using namespace std include template class vector vector const t array,size t size start new t size finish start endofstorage fini...