std::map<int, void*> 确保空键返回 NULL 吗?

Is std::map<int, void*> ensure that a empty key return NULL?

本文关键字:返回 确保 NULL void lt map int std gt      更新时间:2023-10-16

我有下面的代码,我在MSVC2010中尝试过,它工作正常。

std::map<int, int*> fooMap;
assert(fooMap[1] == null);

C++标准是否保证断言不会永远失败?

谢谢。

使用operator[]函数插入std::map时,数据将进行值初始化,指针的值初始化将使其为零(即空指针)。

是。

发件人http://en.cppreference.com/w/cpp/container/map/operator_at

返回对映射到与键等效的键的值的引用,如果该键不存在,则执行插入。

如果执行插入,则映射的值被值初始化(默认为类类型构造,否则为零初始化),并返回对它的引用。

可以回答两个答案:

如果你想在不创建密钥的情况下验证密钥是否为空,最好用一个提交器进行检查:map.find(KEY) != map.end()

如果您想为映射中的某个键创建一个空行,则需要将其指定为map[KEY]

给定您显示的两行代码,该断言永远不会触发。