C++学习——std顺序容器和关联容器的lower_bound操作

这里有容易混淆的点,即:
std 顺序容器和关联容器如map的lower_bound

在 C++ 的顺序容器中,如果你想要查找不大于某个 key 的 value,可以使用 std::lower_bound 算法。这个算法返回一个迭代器,指向第一个不小于给定 key 的元素。

下是一个示例代码,演示如何使用 std::lower_bound 来查找不大于某个 key 的 value:

cpp
#include 
#include 
#include 

int main() {
    std::vector<int> values = {1, 3, 5, 7, 9};

    int key = 6;

 auto it = std::lower_bound(values.begin(), values.end(), key);

    if (it != values.begin()) {
        // 找到了不大于 key 的元素
        --it;
        std::cout << "Value: " << *it << std::endl;
    } else {
        // 没有找到不大于 key 的元素
        std::cout << "No value found." << std::endl;
    }

    return 0;
}

在上面的例中,我们定义了一个包含一些整数的 std::vector 容器,并且设定了要查找的 key 为 6。然后,我们使用 std::lower_bound 来查找不于 key 的元素,并将结果保存在迭代器 it 中。

如果 it 不等于容器的起始迭代器 values.begin(),则表示找到不大于 key 的元素。我们通过迭代器 it 减一来获取该元素,并输出其值。

如果 it 等于器的起始迭代器 values.begin(),则表示没有找到不大于 key 的元素。

在上述示例,输出将是 “Value: 5”,因为 5 是不大于 6 的最接近的值。

在C++中,关联容器提供了一种键值对的映射std::map类模板提供了一个名为lower_bound()的成员函数,用于查找大于或等于给定键的一个元素的迭代器。

lower_bound()函数的语法如下:

iterator lower_bound (const key_type& k);

其中,k是要查找的键。该函数返回一个迭代器,指向std::map中第一个大于或等于k的元素。如果不存在这样的元素,则返回指向std::map末尾的迭代器。

以下是一个示例代码,演示如何使用lower_bound()函数:

#include 
#include 

int main() {
    std::map<int, std::string> myMap;
    myMap[1] = "One";
    myMap[2] = "Two";
    myMap[3] = "Three";
    myMap[4] = "Four";
    myMap[5] = "Five";

 // 使用 lower_bound 查找大于或等于 3 的第一个元素
    auto it = myMap.lower_bound(3);

    if (it != myMap.end()) {
        std::cout << "Key: << it->first << ", Value: " it->second << std::endl;
    } else {
        std::cout << "Element not found." std::endl;
    }

    return 0;
}

输出结果将是:

Key: 3, Value: Three

在这个示例中,lower_bound(3)返回一个指向键为3的元素的迭代器。

你可能感兴趣的:(c++,学习,开发语言)