std::map<int,int> mapy;
++mapy[5];
假設mapy[5]
總是1會安全嗎?我的意思是,mapy[5]
總是會在'++'之前得到默認值0,即使沒有明確聲明,就像在我的代碼中一樣?地圖<int,int>默認值
std::map<int,int> mapy;
++mapy[5];
假設mapy[5]
總是1會安全嗎?我的意思是,mapy[5]
總是會在'++'之前得到默認值0,即使沒有明確聲明,就像在我的代碼中一樣?地圖<int,int>默認值
只要您使用[]運算符訪問映射,如果該鍵不存在,它就會被添加。 int類型的默認初始值設定項被調用 - 因此它將得到值0.
就我所見,未初始化的基元'int'的初始值是_undefined_ - 也就是說它可以是0,也可以是-99765521。曾經有一個未初始化的'int'作爲類變量,並且有一個古怪的值出現在你的程序中?這就是說,我測試了這個,它似乎工作。 '#include
它的工作方式與您想象的不同。 int x; 使x得到未定義的值 int x = int(); 再次x得到0 class foo {int x; foo():x(){}}; foo f; 這裏f.x將爲零 – 2013-07-11 18:40:46
是的,默認值將是該類型的默認值。如果你想要另一個默認值,你可以創建一個行爲類似於int但具有不同的默認構造函數的類。
可能的[內置類型的std :: map默認值]重複(http://stackoverflow.com/questions/4523959/stdmap-default-value-for-built-in-type) – bobobobo 2016-04-21 16:40:49
@bobobobo:這個問題比[std :: map對於內置類型的默認值]更舊(http://stackoverflow.com/questions/4523959/ stdmap-default-value-for-build-in-type),那麼重複的應該是[std :: map爲內置類型的默認值](http://stackoverflow.com/questions/4523959/stdmap-default - 值換內建型)。 – mpromonet 2016-04-22 06:33:47