函式模板 集合模擬

2022-09-07 07:54:12 字數 1646 閱讀 7528

我們可以用乙個陣列來模擬集合,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是定義模板函式的關鍵字...