我发现检查重复项的唯一方法是插入并检查std::pair.secondfor false,但问题是如果密钥未使用,这仍会插入一些东西,而我想要的是一个map.contains(key);函数.
Pot*_*ter 291
使用my_map.count( key ); 它只能返回0或1,这实际上是你想要的布尔结果.
另外my_map.find( key ) != my_map.end()也可以.
Chr*_*ung 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
}
Run Code Online (Sandbox Code Playgroud)