我們可以用乙個陣列來模擬集合,add運算用以實現集合元素的增加,delete運算用於實現集合元素的刪除,find運算用以實現集合元素的查詢,但是目前集合元素型別未知,可以是int、char、double等基本資料型別,也可以是string、time、student等物件型別,要求採用模板函式實現集合元素的增加、刪除和查詢功能。
三個模板函式如下:
int addset(t * myset, t elem,int len)
int deleset(t * myset, t elem, int len)
int findelem(t * myset, t elem, int len)
其中,addset向集合中新增乙個元素,deleset從集合中刪除乙個元素,findelem判斷elem是否是集合成員,三個函式分別返回元素插入位置,刪除位置和存在位置。
主函式有如下資料成員 :
int intset[100]
double douset[100]
string strset[100] 分別是int型別、double型別、string的陣列集合。
int intlen, doulen, strlen分別是int型別、double型別、string的陣列集合的長度
完成上述函式模板和主函式,主函式根據輸入的資訊,建立初始的空集合,呼叫三個模板函式分別對intset、douset和strset執行相應的操作,並輸出對應的集合資訊。
輸入格式:
每一行為乙個集合操作,每行的第乙個數字為集合元素型別,1為整型元素,2為浮點型元素,3為string型別,第二個數字為集合操作型別,1為插入,2為刪除,3為查詢,第三個為集合元素,集合元素型別視第乙個數字給定的集合元素型別而定。輸入0時標誌輸入結束。
輸出格式:
輸出當前操作的執行位置(插入位置、刪除位置和存在位置)
刪除操作時,如果元素x不存在,輸出「x is not exist!」。
插入操作時,如果集合已滿,輸出「full set.」若元素已存在,輸出「x is already exist!」
查詢操作時,如果找不到元素,輸出「x is not exist!」。
輸入:1 1 1
1 1 2
1 3 1
1 2 1
1 2 3
1 3 1
2 1 1.1
2 1 2.2
2 1 3.3
2 3 1.1
2 2 2.2
2 2 2.2
3 1 abc
3 1 bcd
3 3 abc
3 2 abc
3 3 abc
輸出:3 is not exist!
1 is not exist!
2.2 is not exist!
abc is not exist!
遇到的問題主要是template
一開始忘記這句話每次用模板前都要寫一遍,調了好久。。
#includeusing namespace std;
template//寫一遍
int add(t arr,t elem,int len)
else if(type==2)
else
}int main()
return 0;
}
模板 函式模板
c 程式設計 資料結構與程式設計方法 例15.8 利用函式過載技術,求兩個整數 字元 浮點數或字串中的較大值,需要編寫4個函式larger。而c 通過提供函式模板,簡化了過載函式據的過程。include using namespace std template type,模板的形參,用於確定函式的形...
函式模板和模板函式
1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...
函式模板和模板函式
1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...