亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中的map怎么使用

發布時間:2023-05-05 10:52:39 來源:億速云 閱讀:101 作者:iii 欄目:開發技術

這篇文章主要介紹“C++中的map怎么使用”,在日常操作中,相信很多人在C++中的map怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C++中的map怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    C++中的map

    map的介紹

    map是一種使用鍵值對的數據結構,它允許我們使用鍵來查找值。map中的鍵必須是唯一且有序的,而值可以重復并且沒有特定的順序。

    map中的數據以樹結構進行組織,其中每個節點都由一個鍵和一個值組成。根據鍵的大小,節點被插入到正確的位置以保持樹的有序性。這使得在map中查找值非常高效,因為我們可以使用二分查找來快速定位值。

    創建和初始化map

    我們可以使用C++標準庫中的map頭文件來創建和初始化一個map。以下示例展示了如何創建一個map并將幾個鍵值對添加到其中:

    #include <iostream>
    #include <map>
    
    using namespace std;
    
    int main()
    {
        // 創建一個空的map
        map<int, string> myMap;
    
        // 向map中添加鍵值對
        myMap.insert(pair<int, string>(1, "apple"));
        myMap.insert(pair<int, string>(2, "banana"));
        myMap.insert(pair<int, string>(3, "cherry"));
    
        // 輸出map中的元素
        for (auto it = myMap.begin(); it != myMap.end(); ++it) {
            cout << it->first << " : " << it->second << endl;
        }
        
        return 0;
    }

    輸出:

    1 : apple
    2 : banana
    3 : cherry

    在上面的示例中,我們首先創建了一個空的map,然后使用insert()函數將一些鍵值對添加到其中。最后,我們使用迭代器遍歷該map并輸出每個鍵值對。

    我們還可以使用初始化列表來初始化map。以下示例展示了如何使用初始化列表來創建并初始化一個map:

    map<string, int> myMap {
        {"apple", 1},
        {"banana", 2},
        {"cherry", 3}
    };

    map中的查找操作

    向map中添加元素后,我們可以使用其鍵來查找相應的值。使用find()方法可以在map中查找給定鍵的值。如果鍵存在,則find()方法返回指向該元素的迭代器。否則,它將返回指向map結尾的迭代器。

    以下示例展示了如何在map中查找值:

    #include <iostream>
    #include <map>
    
    using namespace std;
    
    int main()
    {
        map<string, int> myMap {
            {"apple", 1},
            {"banana", 2},
            {"cherry", 3}
        };
    
        // 在map中查找元素
        auto it = myMap.find("apple");
        if (it != myMap.end()) {
            cout << "apple is found" << endl;
        } else {
            cout << "apple is not found" << endl;
        }
    
        it = myMap.find("pear");
        if (it != myMap.end()) {
            cout << "pear is found" << endl;
        } else {
            cout << "pear is not found" << endl;
        }
        
        return 0;
    }

    輸出:

    apple is found
    pear is not found

    在上面的示例中,我們首先創建了一個map并向其中添加了一些鍵值對。然后,我們使用find()方法在map中查找給定的鍵,如果找到則輸出相應的消息。

    map的刪除操作

    我們可以使用erase()方法從map中刪除元素。erase()函數需要一個迭代器作為參數,可以使用find()方法查找迭代器,然后使用erase()方法來刪除元素。以下示例展示了如何從map中刪除特定鍵值對:

    #include <iostream>
    #include <map>
    
    using namespace std;
    
    int main()
    {
        map<string, int> myMap {
            {"apple", 1},
            {"banana", 2},
            {"cherry", 3}
        };
    
        // 刪除map中的某個元素
        auto it = myMap.find("apple");
        if (it != myMap.end()) {
            myMap.erase(it);
        }
    
        // 輸出map中的元素
        for (auto it = myMap.begin(); it != myMap.end(); ++it) {
            cout << it->first << " : " << it->second << endl;
        }
        
        return 0;
    }

    輸出:

    banana : 2
    cherry : 3

    在上面的示例中,我們首先創建了一個map并向其中添加了一些鍵值對。然后,我們使用find()方法查找要刪除的元素

    接下來我們來看看如何在map中遍歷元素、如何使用自定義比較器排序map,以及如何使用lower_bound()和upper_bound()方法進行范圍查找。

    map的遍歷操作

    我們可以使用迭代器來遍歷map中的元素。以下示例展示了如何使用迭代器遍歷map:

    #include <iostream>
    #include <map>
    
    using namespace std;
    
    int main()
    {
        map<string, int> myMap {
            {"apple", 1},
            {"banana", 2},
            {"cherry", 3}
        };
    
        // 輸出map中的元素
        for (auto it = myMap.begin(); it != myMap.end(); ++it) {
            cout << it->first << " : " << it->second << endl;
        }
        
        return 0;
    }

    輸出:

    apple : 1
    banana : 2
    cherry : 3

    在上面的示例中,我們使用迭代器遍歷map中的所有元素,并輸出每個鍵值對。

    在map中使用自定義比較器排序

    默認情況下,map按鍵的升序進行排序。如果我們要按照其他方式進行排序,我們可以使用一個自定義比較器來指定排序的規則。以下示例展示了如何使用自定義比較器按值進行排序:

    #include <iostream>
    #include <map>
    
    using namespace std;
    
    bool myComp(const pair<string, int>& a, const pair<string, int>& b) {
        return a.second > b.second;
    }
    
    int main()
    {
        map<string, int> myMap {
            {"apple", 1},
            {"banana", 2},
            {"cherry", 3}
        };
    
        // 按值排序
        vector<pair<string, int>> vec(myMap.begin(), myMap.end());
        sort(vec.begin(), vec.end(), myComp);
    
        // 輸出排序后的結果
        for (auto it = vec.begin(); it != vec.end(); ++it) {
            cout << it->first << " : " << it->second << endl;
        }
        
        return 0;
    }

    輸出:

    cherry : 3
    banana : 2
    apple : 1

    在上面的示例中,我們定義了一個自定義比較器函數myComp來按值對map進行排序。然后,我們將map中的鍵值對存儲在一個vector中,并使用自定義比較器來進行排序。最后,我們遍歷已排序的vector并輸出相應的鍵值對。

    使用lower_bound()和upper_bound()進行范圍查找

    我們可以使用lower_bound()和upper_bound()方法來查找map中一定范圍內的鍵值對。lower_bound()函數返回指向第一個大于等于給定鍵的元素的迭代器,而upper_bound()函數返回指向第一個大于給定鍵的元素的迭代器。

    以下示例展示了如何使用lower_bound()和upper_bound()方法查找map中給定范圍的鍵值對:

    #include <iostream>
    #include <map>
    
    using namespace std;
    
    int main()
    {
        map<string, int> myMap {
            {"apple", 1},
            {"banana", 2},
            {"cherry", 3},
            {"date", 4},
            {"elderberry", 5}
        };
    
        // 查找范圍內的元素
        auto itlow = myMap.lower_bound("b");
        auto itup = myMap.upper_bound("d");
    
        // 輸出找到的元素
        for (auto it = itlow; it != itup; ++it) {
            cout << it->first << " : " << it->second << endl;
        }
        
        return 0;
    }

    輸出:

    banana : 2
    cherry : 3

    在上面的示例中,我們首先創建了一個map并向其中添加一些鍵值對。然后,我們使用lower_bound()和upper_bound()方法查找鍵值在范圍內的元素。最后,我們遍歷找到的元素并輸出它們的鍵值對。

    到此,關于“C++中的map怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    安岳县| 藁城市| 保亭| 涪陵区| 康保县| 佳木斯市| 梁山县| 项城市| 惠东县| 政和县| 四子王旗| 曲靖市| 磐石市| 广安市| 德惠市| 洛川县| 敖汉旗| 上蔡县| 武胜县| 青海省| 准格尔旗| 濮阳市| 平塘县| 津南区| 固阳县| 苏尼特左旗| 瑞丽市| 屯留县| 崇礼县| 温泉县| 广河县| 石渠县| 菏泽市| 晋城| 乐山市| 江陵县| 富源县| 亳州市| 英超| 徐闻县| 娄烦县|