map的[]操作符的注意事項
阿新 • • 發佈:2019-02-14
在一個類Class A中宣告一個常函式AnsiString GPV(const AnsiString& sSec,const AnsiString& sK) const;和一個私有變數map<AnsiString,AnsiString> Map;
當在常函式GPV函式體中有涉及到map的[]操作符時,會出錯,因為operator []可能會改變資料成員物件,這與常函式的特性不符,為了達到操作符[]的效果,我們可以用find()完成這個功能,在函式體中加入:
map<AnsiString,AnsiString>::const_iterator it=Map.find(sSection.LowerCase()+"@"+sKey.LowerCase()); if(it!=Map.end()) { return it->second; } return "";
為了防止以後忘記就分享咯。