我實施類似於從STD中的一個自定義地圖類,但是我有一個problem.In他們的地圖,當你(例如)做:std :: map如何確保所有指針都爲空?
map<string, SomeObject*> container;
SomeObject* object = container["this doesn't exist"];
在調試對象
是0x0000000從地圖,使無效值總是null.However,在我的地圖值無效像初始化指針 - 他們有像0xcdcdcdcd無效值,但是在Release模式的別的東西,所以我不能依靠檢查
if(object == 0xcdcdcdcd)
所以我想能夠做到這一點:
MyMap<string, SomeObject*> container;
SomeObject* object = container["this doesn't exist"]; //and for this to definetely be nullptr
,所以我可以再做
if(object == nullptr)
DoSomething();
我有一個布爾的containsKey(關鍵字類型鍵);功能,但它涉及for循環。是否有某種方法來確保我想要在映射的初始化時間,還是我必須進行定製PointerWrapper將包含指針SomeObject設置到nullptr在PointerWrapper的構造函數?我很難搞清楚std頭文件中發生了什麼,它們有大量的宏和typedefs。
std :: map <>'_value-initializes_它的值 - 請參閱[這個問題/答案](http://stackoverflow.com/q/9025792/636019)的標準。 – ildjarn
檢查密鑰的典型方法是map :: find(key)!= map :: end,而不是檢查默認值。 http://stackoverflow.com/questions/2333728/stdmap-default-value有一個很好的解決你的問題。 – IdeaHat