小编Lao*_*Mao的帖子

被unordered_map的奇怪行为震惊了

这是一段非常简单的代码:

#include <cstdio>
#include <unordered_map>

int main() {  
    std::unordered_map<int, int> m;
    m[1] = m.find(1) == m.end() ? 0 : 1;
    printf("%d\n", m[1]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果地图不包含1,则分配m[1]=0; 否则m[1]=1.我在这里尝试了不同的gcc编译器.

gcc5.2总是输出1,gcc7.1总是输出0.

它为什么如此不同?它不应该永远是0吗?我无法理解这种行为.编写这种逻辑最安全的方法是什么?

c++ unordered-map c++14 c++17

10
推荐指数
1
解决办法
612
查看次数

标签 统计

c++ ×1

c++14 ×1

c++17 ×1

unordered-map ×1