使用 Vector STL lower_bound 方法的 C++ 程序

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将学习如何在 C++ 的 Vector STL 中使用 lower_bound() 方法。实验中将展示该方法的实际实现。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("`C++`")) -.-> cpp/BasicsGroup(["`Basics`"]) cpp(("`C++`")) -.-> cpp/ControlFlowGroup(["`Control Flow`"]) cpp(("`C++`")) -.-> cpp/FunctionsGroup(["`Functions`"]) cpp(("`C++`")) -.-> cpp/AdvancedConceptsGroup(["`Advanced Concepts`"]) cpp(("`C++`")) -.-> cpp/IOandFileHandlingGroup(["`I/O and File Handling`"]) cpp(("`C++`")) -.-> cpp/StandardLibraryGroup(["`Standard Library`"]) cpp/BasicsGroup -.-> cpp/operators("`Operators`") cpp/BasicsGroup -.-> cpp/arrays("`Arrays`") cpp/ControlFlowGroup -.-> cpp/for_loop("`For Loop`") cpp/FunctionsGroup -.-> cpp/function_parameters("`Function Parameters`") cpp/AdvancedConceptsGroup -.-> cpp/pointers("`Pointers`") cpp/IOandFileHandlingGroup -.-> cpp/output("`Output`") cpp/StandardLibraryGroup -.-> cpp/string_manipulation("`String Manipulation`") cpp/StandardLibraryGroup -.-> cpp/standard_containers("`Standard Containers`") subgraph Lab Skills cpp/operators -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} cpp/arrays -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} cpp/for_loop -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} cpp/function_parameters -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} cpp/pointers -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} cpp/output -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} cpp/string_manipulation -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} cpp/standard_containers -.-> lab-96218{{"`使用 Vector STL lower_bound 方法的 C++ 程序`"}} end

创建 Vector 并填充整数

什么是 Vector?

Vector 是一种动态数组,具有自动调整大小的能力,当我们插入或删除元素时,它会自动调整其大小。与普通的静态数组相比,Vector 提供了更大的灵活性。

在这一步中,我们将创建一个空的 vector 并向其中插入一些元素。请注意,由于 vector 是动态的,因此在插入元素之前不需要指定 vector 的大小。

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    // 创建一个空的 vector
    vector<int> v;

    // 向 vector 中插入元素
    v.push_back(10);
    v.push_back(12);
    v.push_back(35);
    v.push_back(65);
    v.push_back(21);
    v.push_back(90);
}

对 Vector 中的元素进行排序

在这一步中,我们将使用 <algorithm> 库中的 sort() 函数对 vector 中的元素进行升序排序。

// 对 vector 进行升序排序
sort(v.begin(), v.end());

在 Vector STL 中使用 lower_bound() 方法

现在,我们将使用 lower_bound() 方法来查找指向第一个不小于给定值的元素的迭代器。

// 定义迭代器 low
vector<int>::iterator low;

// 使用 lower_bound 查找第一个不小于 35 的元素
low = lower_bound(v.begin(), v.end(), 35);

打印结果

在这一步中,我们将打印 35 的下界(lower bound)的索引,并对结果进行一些说明。

// 打印 35 的下界的索引(从 0 开始)
cout << "\n35 的下界的索引(从 0 开始)是: " << (low - v.begin()) << '\n';

// 打印一些说明
cout << "\n请注意,根据定义,它也会考虑数字本身。\n\n";

完整代码

以下是 main.cpp 文件的完整代码:

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    // 创建一个空的 vector
    vector<int> v;

    // 向 vector 中插入元素
    v.push_back(10);
    v.push_back(12);
    v.push_back(35);
    v.push_back(65);
    v.push_back(21);
    v.push_back(90);

    // 打印 vector 中的元素
    cout << "Vector 中的元素是: ";

    for (int i : v)
    {
        cout << i << " ";
    }

    // 对 vector 进行升序排序
    sort(v.begin(), v.end());

    // 打印排序后的 vector
    cout << "\n\n排序后的 Vector 元素是: ";
    for (int i : v)
    {
        cout << i << " ";
    }

    // 定义迭代器 low
    vector<int>::iterator low;

    // 使用 lower_bound 查找第一个不小于 35 的元素
    low = lower_bound(v.begin(), v.end(), 35);

    // 打印 35 的下界的索引(从 0 开始)
    cout << "\n\n35 的下界的索引(从 0 开始)是: " << (low - v.begin()) << '\n';

    // 打印一些说明
    cout << "\n请注意,根据定义,它也会考虑数字本身。\n\n";
    return 0;
}

运行程序

要运行程序,请打开终端窗口并导航到包含 main.cpp 文件的目录。使用以下命令编译并运行程序:

g++ main.cpp -o main && ./main

这将编译并运行程序,你应该会看到以下输出:

Vector 中的元素是: 10 12 35 65 21 90

排序后的 Vector 元素是: 10 12 21 35 65 90

35 的下界的索引(从 0 开始)是: 3

请注意,根据定义,它也会考虑数字本身。

总结

恭喜!在本实验中,你学习了 C++ 中 Vector STL 的 lower_bound() 方法,并通过 vector 看到了它的实现。掌握了这些技能后,你可以精确地创建、排序和搜索 vector 中的元素。干得漂亮!

您可能感兴趣的其他 C++ 教程