我发现检查重复项的唯一方法是插入并检查std::pair.second
false
,但问题是如果密钥未使用,这仍会插入一些内容,而我想要的是是map.contains(key);
函数。
答案 0 :(得分:273)
使用my_map.count( key )
;它只能返回0或1,这实际上是你想要的布尔结果。
另外my_map.find( key ) != my_map.end()
也可以。
答案 1 :(得分:46)
Potatoswatter的回答没问题,但我更倾向于使用find
或lower_bound
。 lower_bound
特别有用,因为如果您希望插入具有相同键的内容,则返回的迭代器随后可用于提示插入。
map<K, V>::iterator iter(my_map.lower_bound(key));
if (iter == my_map.end() || key < iter->first) { // not found
// ...
my_map.insert(iter, make_pair(key, value)); // hinted insertion
} else {
// ... use iter->second here
}
答案 2 :(得分:2)