map 自定義型別作為鍵值

2021-06-11 19:15:28 字數 1076 閱讀 8086

作為乙個計算機專業的學生,一直沒有深入的學習過map真是罪過罪過!

今天終於對map的insert機制做了一點研究,弄明白了如何用自定義型別作為鍵值了。

網上大多數的言論都是必須過載「<"操作符,但其實不止要過載"<"操作符,還需過載"=="操作符才能更好的完成工作。對於乙個自定義型別, 過載」<「操作符一定要合適,即對於自定義型別a的兩個物件a,b,如果a < b == false, 則b < a 必須==true,否則會出現invalid operator《這個錯誤。不得不佩服stl的編寫者,太牛叉了!

廢話不多說,上**最好。

#ifndef ggi_h

#define ggi_h

class ggi;

#endif

#include "ggi.h"

ggi::ggi()

ggi::ggi(int a, int b)

bool operator<(const ggi& the, const ggi& other)

bool operator==(const ggi& the, const ggi& other)

#include "ggi.h"

#include #include #include #include #include #include using namespace std;

int main()

} for(map::iterator mi = mg.begin(); mi != mg.end(); ++mi)

fin.close();

system("pause");

return 0;

}

上面是正確的**。

但是有乙個問題還沒弄明白就是如果不過載==操作符,也是可以工作的,這其中也有可以插入成功的,也有失敗的,程式內部是怎麼判斷是否插入成功呢? 還望各位能不吝賜教。

map以自定義型別當Key(鍵值)

map以自定義型別當key 鍵值 by mh1026 www.libcl.cn 今天,在公司的群裡有人問及關於map的鍵值能www.libcl.cn否使用自定義型別 類或者結構 當時我也不清楚,所以回來學習一下。關於map的定義 namespace std 第乙個template引數被當做元素的ke...

map以自定義型別當Key(鍵值)

今天,在公司的群裡有人問及關於map的鍵值能www.libcl.cn否使用自定義型別 類或者結構 當時我也不清楚,所以回來學習一下。關於map的定義 namespace std 第乙個template引數被當做元素的key,第二個template引數被當作元素的value。map的元素型別key和t...

map以自定義型別當Key(鍵值)

map以自定義型別當key 鍵值 by mh1026 www.libcl.cn 今天,在公司的群裡有人問及關於map的鍵值能www.libcl.cn否使用自定義型別 類或者結構 當時我也不清楚,所以回來學習一下。關於map的定義 namespace std 第乙個template引數被當做元素的ke...