【发布时间】:2013-02-26 03:15:28
【问题描述】:
在我的代码中,我有一个 std::map,看起来像这样:
std::map<std::string, A*> myMap;
其中 A 是我的自定义类之一。
当我通过operator[] 访问不存在的地图元素时,如下所示:
std::string s("hello");
A* pA = myMap[s];
我知道将使用该键创建一个新元素,但我希望将指针初始化为 NULL。换句话说,如果myMap[s] 存在,则应该返回一个有效的指针。如果不是,我希望在上述代码执行后 pA 为 NULL。
默认情况下,如果myMap[s] 不退出,pA 是否会包含垃圾?如果元素不退出,我怎样才能使 pA 包含值 NULL?
【问题讨论】:
-
如果在您调用之前密钥不存在,它将是一个 nullptr。这种生成的自动插入的映射值(在您的情况下为指针类型)是值初始化的,并且每个标准的值初始化指针是零初始化的,这与 nullptr 同义。 IE。你可以免费获得它。
-
投票者愿意详细说明吗?我准确地解释了我想要实现的目标,并询问了有关在所提供情况下的默认行为的问题。
-
@user974967 这个问题没有显示任何研究工作(即您甚至没有尝试阅读手册)。
-
@melpomene 手册?那是什么手册?你是说标准吗?