c++ - map中operator[]插入的指针类型的值是否总是NULL?

标签 c++ pointers dictionary initialization stdmap

<分区>

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

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

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

最佳答案

插入的值将被初始化为一个空指针。

std::map::operator[]如果键不存在,将执行插入;映射值将为 value-initialized , 对于指针类型它是 zero-initialization ,这会导致空指针。

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

关于c++ - map中operator[]插入的指针类型的值是否总是NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40519454/

相关文章:

c++ - QObject::connect 无匹配函数

C++ Linux : OpenPrinter equivalent

c++ - cin 和赋值的区别

c++ - 需要在 C++ 中初始化的持久全局数据

c++ - 指向数组的指针是否应该等于指向其第一个元素的指针?

c - strtok() 覆盖它的源字符串

c++ - 如何在 `non-const reference of type char* &` 参数中硬编码 C 字符串

c++ - 在类方法内部访问和分配的多维 map 模板

Python:更新引用值

arrays - 键入任何?没有下标成员