首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不做insert的情况下检查std::map是否包含键?

如何在不做insert的情况下检查std::map是否包含键?
EN

Stack Overflow用户
提问于 2010-10-08 07:13:21
回答 3查看 189.8K关注 0票数 165

我发现检查重复项的唯一方法是插入并检查falsestd::pair.second,但问题是,如果不使用键,这仍然会插入一些东西,而我想要的是一个map.contains(key);函数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-08 07:15:11

使用my_map.count( key );它只能返回0或1,这实际上就是您想要的布尔结果。

或者,my_map.find( key ) != my_map.end()也可以工作。

票数 333
EN

Stack Overflow用户

发布于 2010-10-08 07:18:31

Potatoswatter的回答是正确的,但我更喜欢使用findlower_boundlower_bound特别有用,因为如果您希望插入具有相同键的内容,则返回的迭代器随后可用于提示插入。

代码语言:javascript
复制
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
}
票数 48
EN

Stack Overflow用户

发布于 2019-08-27 00:19:39

您的期望,map.contains(key),已经安排在标准草案C++2a中。2017年,它由gcc 9.2实施。它也在当前的clang中。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3886593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档