-1
我試圖訪問值從鑰匙在一個std:地圖在C++訪問C++地圖
假設aObject有效 MYMAP有多個值。
map<myObject,int> mymap;
myObject aObject;
int value = mymap[aObject];
是否必須重新定義operator == for myObject?
如果我不重新定義它會發生什麼?
我試圖訪問值從鑰匙在一個std:地圖在C++訪問C++地圖
假設aObject有效 MYMAP有多個值。
map<myObject,int> mymap;
myObject aObject;
int value = mymap[aObject];
是否必須重新定義operator == for myObject?
如果我不重新定義它會發生什麼?
std::map
要求您重載operator<
作爲鍵類型,或者提供一個比較器。兩者都必須實施嚴格的弱排序。如果你不提供,你的程序將不會編譯。如果你不正確地實現它們(即不是一個嚴格的弱排序),你會得到垃圾結果(我實際上不知道這是否是嚴格意義上的未定義行爲)。
arrgh - 再次擊敗我.. :) – Nim
@Nim:我今天着火:) –
...或專門針對鍵類型的「std :: less」。 –