【问题标题】:Check if element exists in C++ map? [duplicate]检查元素是否存在于 C++ 映射中? [复制]
【发布时间】:2011-08-20 05:04:29
【问题描述】:

可能重复:
How to find if a given key exists in a C++ std::map

在 C++ 中,如何检查是否存在带键的元素?

【问题讨论】:

  • @Space_C0wb0y:几乎没有。了解键和值之间的区别。
  • 实际上,这个问题的标题具有误导性,它确实是关于查找给定键是否存在于 std::map 中。
  • @Tomalak:重新阅读问题和所有答案后,我有理由确定它是重复的。虽然标题不准确。

标签: c++ dictionary stl


【解决方案1】:
if (myMap.find(key) != myMap.end())
{ // there is such an element
}

查看referencestd::map::find

【讨论】:

  • +1(虽然我不会向语言新手推荐 cplusplus.com)。
  • @Tomalak Geret'kal:你确定 OP 是新人吗?你会推荐什么?
  • 我很好奇,cplusplus有什么不好的?我经常用它来理解小细节。
  • 这个问题宁可放弃。
  • @RickoM:cplusplus.com 是出了名的错误百出,其教程具有误导性(即使是教程)。我自己将它用作“提醒”参考,但我对 C++ 的了解足以发现错误,因此绝对不会推荐它。
【解决方案2】:

尝试使用find 方法找到它,如果找不到元素,该方法将返回地图的end() 迭代器:

if (data.find(key) != data.end()) {
    // key is found
} else {
    // key is not found
}

当然你不应该find 两次,如果你以后需要与给定键对应的值。在这种情况下,只需先存储find 的结果即可:

YourMapType data;
...
YourMapType::const_iterator it;
it = data.find(key);
if (it != data.end()) {
    // do whatever you want
}

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多