我发现检查重复项的唯一方法是插入并检查false
的std::pair.second
,但问题是,如果不使用键,这仍然会插入一些东西,而我想要的是一个map.contains(key);
函数。
发布于 2010-10-08 07:15:11
使用my_map.count( key )
;它只能返回0或1,这实际上就是您想要的布尔结果。
或者,my_map.find( key ) != my_map.end()
也可以工作。
发布于 2010-10-08 07:18:31
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
}
https://stackoverflow.com/questions/3886593
复制相似问题