作為乙個計算機專業的學生,一直沒有深入的學習過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...