我從php
我,當我定義是這樣的:爲什麼我在使用未定義索引時沒有收到錯誤?
$a = array();
echo $a[586];
我會得到一個有關未定義指數另行通知。
同時在c++
我可以這樣做:
map<int, string> my_map;
cout << "Map is: " << my_map[34535];
string sentence = "acdefb s";
cout << "Letter is: " << sentence[15];
而且我不會得到任何錯誤。
爲什麼不可能在php
和可能在c++
?
有趣的是,PHP的表現比C++更嚴格。 – 2013-02-08 20:48:57
在C++'operator [](keytype)中,如果map中沒有一個已經存在,那麼map *將會添加一個默認構造的map的value-type實例。如果你不想要這種行爲,可以使用'.find(keytype)'來代替'my_map.end()'來檢查生成的迭代器。 – WhozCraig 2013-02-08 20:49:18
'句子[34535]'超出界限,並會導致程序崩潰。 – Rapptz 2013-02-08 20:50:41