1 實驗內容及目的
l 實驗目的
理解和掌握c++類和物件的模板。
l 實驗內容
實現stack類,1)向stack類新增乙個例項函式printstack,以列印棧中所有元素;2)為stack類新增乙個例項函式contains(t element),檢查給定元素是否在棧中。
2 實驗步驟
(1)實現類
l stack類
(2)編寫測試程式
建立若干個stack物件,運用類中的功能函式對其進行列印和檢索。
3 源**
標頭檔案:
#ifndef classtemplate_hh
#define classtemplate_hh
template
class stack
//這是
void show();
template
void stack::push(t x)
elems[size] = x;
size++;
template
t stack::pop()
t temp;
temp = elems[size-1];
size--;
elems[size-1] = null;
return temp;
template
t stack::peek()
return elems[size-1];
template
int stack::getsize()
return size;
template
void stack::printstack(){
for (int i=0;icout
bool stack::contains(t x){
for (int i = 0;iif (elems[i]==x)
return 1;
else return 0;
#endif
測試檔案:
#include
#include "max.h"
using std::cout;
using std::cin;
using std::endl;
void main()
stackch;
int n = 0,i;
int x;
cout <
"<
cin >>n;
cout <
:"<
for (i=0;icin>>x;
ch.push(x);
ch.printstack();
cout<
"<
cin >>x;
if (ch.contains(x))
cout<
"<
else
cout<
"<
4 遇到的問題與分析
對模板類的認識不夠透切,存在概念的模糊,導致在執行過程中出現錯誤。
方法:查閱課本,嚴格按照課本的例子進行模板類的書寫,從而解決問題。
5 實驗體會
通過該實驗,基本上了解了c++中類和物件的模板的相關知識。但對模板概念的模糊理解給**實現上造成了一定的影響。而經過重複的嘗試和修改最終讓程式能夠基本的實現實驗的要求,當然這畢然存在著一定的缺陷,這將會是以後學習的重要部分之一。
而在此次實驗過程中,感受到許多問題是需要花費不一樣的努力才能夠達到自我滿意的結果的。儘管它已經可以滿足當前的需要,但畢竟這並不是盡頭,它仍需要不斷的改善,才能夠更接近盡頭。
C 類和物件的模板
在程式設計中往往尊在這樣的兩種情況,一種是兩個或多個函式的程式結構相同,區別僅在於其引數型別或函式返回型別不同 另一種是兩個或多個類的結構相同,差別僅在於部分類的成員的型別或成員函式的型別及引數的型別不同。不論哪種情況,其程式框架都基本相同,只是具體細節不同。c 提供了模板機制,利用這一機制,可簡化...
C 模板類和類模板
用相同的類模板可以組建任何型別的物件集合。在傳統c 中,可能有乙個浮點數類或者乙個整數類,如果使用類模板,可以定義乙個對兩者都適用的類number。類模板說明 類模板說明的一般形式是 template 型別形參表 class 類名 template 型別形參表 返回型別 類名 型別名錶 成員函式1 ...
C 類模板和模板類
類模板的意義和函式模板的意義是一樣的。template 宣告乙個模板,虛擬型別名為t。注意 這裡沒有分號。class compare 類模板名為compare t max t min 不能這樣定義類模板中的成員函式而 應當寫成類模板的形式 template tcompare max compare ...