我从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