【发布时间】:2019-11-08 13:51:26
【问题描述】:
我已经多次使用无序映射或哈希映射,但这是我第一次遇到这样的问题: 如果我运行这段代码:
string s = "dvd";
for(int i = 0;i < s.size();i++){
if(!map[s[i]]){
cout<<s[i];
map[s[i]] = i;
}
}
输出是
d v d
我的问题因为 d 已经在 map 中,所以为什么要再次打印代码。 另一个有趣的事情是,当我运行这段代码时
string s = "dvd";
unordered_map<char,int>map;
for(auto i :s){
if(!map[i]){
cout<<i<<" ";
map[i] = i;
}
}
它给出了预期的输出
d v
我在这里错过了什么??
【问题讨论】:
-
i = 0为假。 -
所以值不能为 0 ?现在我尝试使用 map.find(s[i]) == map.end() 并且效果很好,知道为什么吗??
-
因为这是检查地图是否包含给定键的正确方法。
-
哦,我明白了,谢谢,
标签: c++ c++11 hashmap unordered-map