在 C++ 中檢查 map 中是否存在某個鍵值

Jinku Hu 2023年1月30日 2021年6月28日
  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::cout; using std::cin;
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::cout; using std::cin;
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::cout; using std::cin;
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!
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - C++ Map