我用模板寫了類。類具有map成員和一些getxxx()/ setxxx()成員函數。我想在C++中爲map <>返回給定KEY的VALUE值。在地圖<>中不存在KEY的情況下返回什麼?
template<typename T1,typename T2>
class C1{
map<T1,T2> M;
public:
map<T1,T2> getM();
T2 getMvalue(T1 Key);
void setM(T1 key,T2 Value);
};
這裏我想實現getMvalue(),它臨危鍵作爲參數,並返回相應的「值」,如果「鑰匙」是MAPM可用。
它看起來像......
template<typename TKey,typename TValue>
T2 C1<T1,T2>::getMvalue(T1 Key){
if(M.count(Key)>0)
return M[Key];
else
return(???);
};
在這裏,我需要的地方???中使用的東西。記住函數的返回類型是T2,根據用戶的決定可以是任何東西。 我如何取代「???」和什麼?
這就是我正在建議你何時擊敗我的過程...... +1 – tmpearce 2012-03-08 17:58:18
地圖<>中會有數百個鍵值對,並且會有數千個這樣的類對象。 因此,當在每個對象的地圖<>中搜索KEY時,將具有更高的時間複雜度。 在這種情況下,使用這種技術會更好(使用tryGet),如果KEY存在,將需要「兩次」搜索。 – 2012-03-08 18:04:59
@NDThokare:你可以使用'find()'而不是'count()'和'[]'組合。那麼只會有一個搜索。 – 2012-03-08 18:11:40