介绍
在本实验中,我们将学习如何在 C++ 的 Vector STL 中使用 lower_bound()
方法。实验中将展示该方法的实际实现。
在本实验中,我们将学习如何在 C++ 的 Vector STL 中使用 lower_bound()
方法。实验中将展示该方法的实际实现。
什么是 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);
}
在这一步中,我们将使用 <algorithm>
库中的 sort()
函数对 vector 中的元素进行升序排序。
// 对 vector 进行升序排序
sort(v.begin(), v.end());
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 中的元素。干得漂亮!