C++ 映射中运算符[]插入的指针类型值是否始终为空?

C++ 映射中运算符[]插入的指针类型值是否始终为空?,c++,pointers,dictionary,initialization,stdmap,C++,Pointers,Dictionary,Initialization,Stdmap,以下代码的预期行为是什么 #include <map> ... std::map<int, A *> myMap; myMap[0]; if(myMap[0] == NULL) {// true or false? } #包括 ... std::map myMap; myMap[0]; 如果(myMap[0]==NULL){//true还是false? } if语句的计算结果是否为true?插入的值将初始化为空指针 如果密钥不存在,将执行插入;对于指针类型,映射值将为

以下代码的预期行为是什么

#include <map>
...
std::map<int, A *> myMap;
myMap[0];
if(myMap[0] == NULL) {// true or false?
}
#包括
...
std::map myMap;
myMap[0];
如果(myMap[0]==NULL){//true还是false?
}

if语句的计算结果是否为true?

插入的值将初始化为空指针

如果密钥不存在,将执行插入;对于指针类型,映射值将为,这将导致空指针


顺便说一句:最好使用(自C++11)而不是
NULL

插入的值将初始化为NULL指针

如果密钥不存在,将执行插入;对于指针类型,映射值将为,这将导致空指针


顺便说一句:最好使用(自C++11)而不是
NULL

NULL
应该读
nullptr
?还有,为什么不使用智能指针呢?因为代码不编译,所以它什么也不做。请输入正确的标题,因为
map
可能是某人的自制地图。@EdHeal,这是公司的一些遗留代码,我们正在使用遗留编译器。。XD如果要避免在地图中输入无效数字,请使用
find()
进行搜索,使用
insert()
而不是
[]
进行新的输入。@SauravSahu,我同意这一点。这将提高代码的健壮性,但由于office中的SE实践非常糟糕,我不允许更改不属于我的代码。
NULL
应该读
nullptr
?还有,为什么不使用智能指针呢?因为代码不编译,所以它什么也不做。请输入正确的标题,因为
map
可能是某人的自制地图。@EdHeal,这是公司的一些遗留代码,我们正在使用遗留编译器。。XD如果要避免在地图中输入无效数字,请使用
find()
进行搜索,使用
insert()
而不是
[]
进行新的输入。@SauravSahu,我同意这一点。这将提高代码的健壮性,但由于office中的SE实践非常差,我不允许更改不属于我的代码。这是由于我在公司工作时遇到的一些限制。我们仍然使用C++98标准。缺少最新C++的许多特性。e、 g智能ptr…>谢谢你的回答,我会尽快接受=)这是因为我在公司工作时受到一些限制。我们仍然使用C++98标准。缺少最新C++的许多特性。e、 g智能ptr…>谢谢你的回答,我会尽快接受。)