在 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