C++ multimap::lower_bound() 函式



C++ 的 std::multimap::lower_bound() 函式用於返回一個迭代器,該迭代器指向 multimap 中第一個鍵不小於指定鍵 (k) 的元素。這意味著它指向第一個等於或大於 k 的元素。如果未找到這樣的元素,則它返回一個指向 multimap 末尾的迭代器。此函式的時間複雜度是對數的,即 O(log n)。

語法

以下是 std::multimap::lower_bound() 函式的語法。

iterator lower_bound (const key_type& k);
const_iterator lower_bound (const key_type& k) const;

引數

  • k - 表示要搜尋的鍵。

返回值

此函式返回指向第一個元素的迭代器。

示例

讓我們看下面的例子,我們將演示 lower_bound() 函式的使用。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a;
    a.insert({1, "Hi"});
    a.insert({2, "Hello"});
    a.insert({3, "Vanakam"});
    auto x = a.lower_bound(2);
    if (x != a.end()) {
        std::cout << "Lower bound key value: " << x->second << std::endl;
    }
    return 0;
}

輸出

以上程式碼的輸出如下:

Lower bound key value: Hello

示例

考慮以下示例,我們將對不存在的鍵應用 lower_bound() 並觀察輸出。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a = {
        {5, "AB"},
        {6, "BC"},
        {4, "CD"}
    };
    auto x = a.lower_bound(1);
    if (x != a.end()) {
        std::cout << "Lower bound key value : (" << x->first << ", " << x->second << ")\n";
    } else {
        std::cout << "Key not found.\n";
    }
    return 0;
}

輸出

以下是以上程式碼的輸出:

Lower bound key value : (4, CD)

示例

在下面的示例中,我們將使用 lower_bound() 獲取指向第一個元素的迭代器,然後遍歷 multimap 的其餘部分,列印所有鍵大於或等於下界鍵的元素。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a = {
        {1, "Audi"},
        {2, "RS5"},
        {3, "Cruze"},
        {3, "Sail"},
        {4, "Beats"}
    };
    auto x = a.lower_bound(3);
    std::cout << "Elements with lower bound key \n";
    for (; x != a.end(); ++x) {
        std::cout << "(" << x->first << ", " << x->second << ")\n";
    }
    return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Elements with lower bound key 
(3, Cruze)
(3, Sail)
(4, Beats)
multimap.htm
廣告

© . All rights reserved.