使用 operator[] 时映射中的默认指针值
default pointer values in map when using operator[]
由于缺少索引而插入到映射中的指针是否总是 NULL?
std::map<int, Foo*> myMap;
Foo* myFoo = myMap[0];
myFoo保证为空吗?
来自 cpp首选项:
如果执行插入,则映射的值将初始化(对于类类型默认构造,否则为零初始化),并返回对它的引用
所以是的,这保证是NULL
.
是的,当访问缺少的索引时,它是值初始化的,这意味着在这种情况下返回一个空指针(因为它是一个标量值)。
来源 : http://en.cppreference.com/w/cpp/container/map/operator_at
相关文章:
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 为什么指针对象没有调用默认构造函数
- 默认参数和函数指针作为函数参数C++
- 为什么在使用指针时不采用类成员的默认值,而不是直接实例化对象时?
- 当指针在 cpp 17 中失去引用时,是否会调用非默认析构函数?
- char指针或char变量的默认值是多少
- 在一行中将默认类型值上的指针作为参数传递
- 如何使用带有非默认构造函数的指针来提升序列化
- 指针参数的默认值
- 不能将指针用作默认模板参数
- 模板默认参数作为指向自身的指针
- 指针的默认值
- 原始指针的默认删除器(unique_ptr)
- 常量指针到成员是否默认指向 int?
- 从指针访问值或获取其默认值(如果为 null)的最干净方法
- C 如何删除指针的默认对象成员
- 唯一指针作为默认参数
- 在C 默认指针参数上删除
- 使用 operator[] 时映射中的默认指针值
- 声明一个具有默认指针值的函数