使用C++ Map實現快速查找

一、Map簡介

Map是C++標準庫提供的一種關聯容器,可以進行快速的鍵值對查找。Map底層是使用紅黑樹實現的,可以保證插入、刪除、查找的時間複雜度都是O(log n)。Map的使用方法類似於數組,但是可以使用任意類型作為Key,而且不需要提前設定數組大小。下面將詳細介紹使用Map實現快速查找的過程。

二、Map使用方法

使用Map需要包含

頭文件,然後定義一個Map對象。Map對象的定義方式如下:

map Map名稱;

其中鍵類型指的是Map中鍵(Key)的數據類型,值類型指的是Map中值(Value)的數據類型。下面是一個例子,定義了一個將字符串映射成整數的Map:

map str2int;

三、Map的插入操作

Map的插入操作使用insert()函數,插入的數據以鍵值對(Key-Value)的方式給出,具體語法如下:

Map名稱.insert(pair(鍵值, 值));

其中pair是C++標準庫提供的對鍵值對進行打包的模板類,可以將兩個數據打包為一個整體進行處理。下面是一個例子,將字符串和整數打包成為一個鍵值對並插入到Map中:

str2int.insert(pair("apple",1));
str2int.insert(pair("banana",2));
str2int.insert(pair("orange",3));

四、Map的查找操作

Map的查找操作使用find()函數,給出一個鍵(Key)的值,返回一個指向對應值(Value)的迭代器。如果鍵不存在,則返回指向Map末尾的迭代器(end())。下面是一個例子,查找字符串”apple”對應的整數值:

map::iterator it= str2int.find("apple");
if (it!=str2int.end()){
    cout << "apple對應的整數值是:"<second << endl;
}
else {
    cout << "查找失敗" << endl;
}

輸出結果為:

apple對應的整數值是:1

五、實例:用Map實現快速查找

現有10萬個手機號碼,要進行快速的查詢。可以將手機號碼存儲在Map中,以手機號碼作為鍵(Key),以用戶信息作為值(Value)進行存儲。下面是一個例子,將一些用戶信息存儲到Map中,然後根據手機號碼進行查找:

#include 
#include 
#include 
using namespace std;

struct UserInfo {
    string name;
    int age;
    string address;
};

int main() {
    map phonebook;
    phonebook.insert(pair("15512345678", {"Tom", 21, "Beijing"}));
    phonebook.insert(pair("15687654321", {"Jerry", 23, "Shanghai"}));
    phonebook.insert(pair("15900001111", {"Lucy", 22, "Guangzhou"}));
    phonebook.insert(pair("13188889999", {"Lily", 20, "Chongqing"}));

    string phone;
    cout <> phone;

    map::iterator it= phonebook.find(phone);
    if (it!=phonebook.end()){
        cout <second.name << " " <second.age << "歲" <<endl;
        cout << "地址是:" <second.address << endl;
    }
    else {
        cout << "查無此人" << endl;
    }

    return 0;
}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/288957.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-24 03:01
下一篇 2024-12-24 03:01

相關推薦

  • Python快速查找算法

    本文將從幾個方面介紹Python中常用的查找算法,包括線性查找、二分查找、哈希表查找和樹形查找。 一、線性查找 線性查找算法是一種基本的查找算法,在一個未排序的列表中查找指定元素。…

    編程 2025-04-27
  • Python快速查找元素

    本篇文章將介紹如何使用Python快速查找元素。在Python中,我們可以使用多種工具實現對元素的查找,包括XPath、CSS選擇器和正則表達式等。下面我們將從不同的角度,分別介紹…

    編程 2025-04-27
  • 深入解析map遍歷刪除

    一、概述 map是C++ STL中用於映射鍵值對的容器,具有一些方便的操作,如insert、find、count等。然而,如果需要根據某些條件刪除元素,就需要遍歷整個map,找到需…

    編程 2025-04-25
  • Java Map containsKey方法詳解

    一、containsKey方法簡介 containsKey方法是Java Map接口中的方法之一,用於判斷Map集合中是否包含某個指定的key,方法返回一個boolean類型值。如…

    編程 2025-04-24
  • JS Map刪除元素詳解

    一、JS刪除DOM元素 在前端開發中,動態地刪除DOM元素是一項常見操作。通過JavaScript,我們可以輕鬆地以編程方式刪除HTML頁面上的元素,從而實現頁面的動態更新。下面是…

    編程 2025-04-24
  • mapreduce.map.java.opts

    一、基本概念 mapreduce.map.java.opts是Hadoop中MapReduce框架中的一個重要的參數,它用於控制map任務中Java虛擬機(JVM)的參數。通常情況…

    編程 2025-04-24
  • 深入理解map轉換為json字符串

    一、map轉換為json字符串 Map是一種鍵值對的數據結構,可以存儲任意類型的對象。在Java中,我們可以將一個Map對象轉換成一個JSON字符串,這個JSON字符串可以用於數據…

    編程 2025-04-23
  • 深入解析Map和FlatMap

    一、Map和FlatMap的基本概念 Map和FlatMap是函數式編程裏面非常重要的兩個概念,它們可以處理一些複雜的數據結構。Map是指對一個數組或者列表的每個元素都執行一定的操…

    編程 2025-04-23
  • 詳解map轉對象

    一、基礎概念 Map是一種鍵值對的數據結構,它是Java中非常常用的數據類型,尤其是在開發中常用於將JSON字符串轉化為對象。Object則是Java中的一個基礎數據類型,它是所有…

    編程 2025-04-23
  • c++ map排序詳解

    一、基本介紹 map是c++語言中的一個關聯數組容器,可以在一個鍵和值之間建立一種映射關係。其中,鍵是唯一的,值可以重複。同時,map中的元素是按鍵自動排序的,排序方式可以通過自定…

    編程 2025-04-23

發表回復

登錄後才能評論