6 4 鍵值對錶的管理(運算子過載)

2021-10-07 07:10:36 字數 1252 閱讀 4253

鍵值對(key-value pair)表中儲存的是乙個個鍵值對,如table[2016]=19.5表示該表中有一項的key為2016,其value為19.5。我們需要管理的表中, key為整數,而value可為浮點數,整數或字元。所以我們定義乙個類模板,得到了三個相應的模板類。

鍵值對錶的容量是有限的,當表中儲存的key的數量達到上限時,將不存入新的鍵值對,但對錶中已有的key仍然會繼續更新其value。每行輸入有三項,第一項是型別(1為浮點數,2為整數,3為字元),第二項是key,第三項是value。在處理完每行輸入後,如果輸入的型別資訊合法,則會輸出當前該型別的鍵值表中最小的value及其key。對於整數和字元表,若干個鍵值對的value值可能相同,此時輸出key最小的那一項。

現在要實現該類模板。函式介面定義:

template

<

class

t>

class

table

裁判測試程式樣例:

#include

using

namespace std;

/* 請在這裡填寫答案 */

intmain()

}return0;

}

輸入樣例:

1 10 25.3

2 12 25

2 2016 25

輸出樣例:

10 25.3

2016 19

12 25

輸出說明:在輸入第一行後,因為浮點數鍵值表只有一項,故直接輸出。輸入第二行後,整數表中將增加一項(12,25),此時最小的仍然是(2016,19),故輸出2016 19.在輸入第三行後,key為12和2016對應的value均為25,但12的key更小,故輸出12 25.

template

<

class

t>

class

table

t&operator

(int k)}if

(cnt==size)

return t;

//存滿

//沒存過

key[cnt]

=k;return val[cnt++];

}void

min()}

cout<" "<;template

<

class

t>

int table

::cnt=

0;

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載 類的賦值運算子過載

下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...

運算子過載限制 不能過載的運算子

1.過載後的運算子必須至少有乙個操作符是使用者定義的型別。2.使用運算子不能違反運算子原來的句法規則。3.不能新建運算子 4.不能過載 sizeof const cast,dynamic cast,reinterpret cast,static cast 5.只能通過成員函式過載的運算子 限制說明 ...