利用模板實現vector類,異常處理

2021-09-24 05:14:27 字數 1254 閱讀 1822

題目描述

參考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...