在 C++ 中检查 map 中是否存在某个键值

Jinku Hu 2023年10月12日
  1. 使用 std::map::find 函数检查 C++ map 中是否存在某个键
  2. 使用 std::map::count 函数检查 C++ map 中是否存在某个键值
  3. 使用 std::map::contains 函数检查 C++ map 中是否存在某个键值
在 C++ 中检查 map 中是否存在某个键值

本文将介绍如何在 C++ 中检查 map 中是否存在某个键。

使用 std::map::find 函数检查 C++ map 中是否存在某个键

std::map 容器是一个键值对的关联数据结构,按顺序存储,每个元素都有一个唯一的键。另一方面,STL 还提供了一个名为 std::unordered_map 的同一个容器的未排序版本。这两个容器都支持下面描述的关键字搜索方法。

findstd::map 容器的内置函数之一,它采用对应键值的单个参数进行搜索。该函数返回具有给定键值的元素的迭代器,否则返回尾后迭代器。在以下示例中,我们初始化 std::pair<string, string> 类型的 map,然后从传递给 find 函数的用户输入中获取键值。示例程序将肯定字符串输出到 cout 流。

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};

  for (const auto& [key, value] : lang_map) {
    cout << key << " : " << value << endl;
  }

  cout << "Enter the key to search for: ";
  cin >> key_to_find;

  if (lang_map.find(key_to_find) != lang_map.end()) {
    cout << "Key Exists!" << endl;
  }

  return EXIT_SUCCESS;
}

输出:

j : Julia
l : Lua
m : MATLAB
o : Octave
p : Python
s : Scala
Enter the key to search for: l
Key Exists!

使用 std::map::count 函数检查 C++ map 中是否存在某个键值

或者,可以利用 std::map 容器的 count 内置函数来检查给定的键是否存在于 map 对象中。请注意,count 函数检索具有给定键值的元素的数量。如果没有找到键为 0 的元素,则返回值。因此,当给定的键存在于 map 对象中时,我们可以使用 count 函数调用作为 if 条件来输出确认字符串。

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};

  cout << "Enter the key to search for: ";
  cin >> key_to_find;

  if (lang_map.count(key_to_find)) {
    cout << "Key Exists!" << endl;
  }

  return EXIT_SUCCESS;
}

输出:

Enter the key to search for: l
Key Exists!

使用 std::map::contains 函数检查 C++ map 中是否存在某个键值

contains 是另一个内置函数,可用于查找键是否存在于 map 中。如果具有给定键的元素存在于对象中,则此函数返回一个布尔值。请注意,本文中列出的所有三个函数都具有对数复杂度。

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};

  cout << "Enter the key to search for: ";
  cin >> key_to_find;

  if (lang_map.contains(key_to_find)) {
    cout << "Key Exists!" << endl;
  }

  return EXIT_SUCCESS;
}

输出:

Enter the key to search for: l
Key Exists!
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook

相关文章 - C++ Map