如何检查如果std :: map包含一个没有插入的键?
我发现检查重复的唯一方法是通过插入和检查std::pair.second
为false
,但问题是,这仍然插入的东西,如果密钥是未使用的,而我想要的是一个map.contains(key);
function。
使用my_map.count( key )
; 它只能返回0或1,这实际上是你想要的布尔结果。
或者my_map.find( key ) != my_map.end()
也可以。
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 }