我的代码如下,我在MSVC2010中尝试过它可以正常工作。
std::map<int, int*> fooMap;
assert(fooMap[1] == null);
C ++标准是否保证断言不会永远失败?
感谢。
答案 0 :(得分:2)
使用std::map
函数插入operator[]
时,数据将为value initialized,指针的值初始化将使它们为零(即空指针)。
答案 1 :(得分:1)
是
来自http://en.cppreference.com/w/cpp/container/map/operator_at
返回对映射到等效于key的键的值的引用,如果此类键尚不存在则执行插入。
如果执行插入,则映射值是值初始化的(默认为类类型构造,否则为零初始化),并返回对它的引用。
答案 2 :(得分:1)
可以回答两个答案:
如果您想要在没有创建密钥的情况下验证密钥为空,那么最好与itterator进行核对:map.find(KEY) != map.end()
如果您想为地图中的某个键创建一个空行,就像您指定它一样map[KEY]
答案 3 :(得分:0)
鉴于您已经展示的两行代码,该断言永远不会触发。