Введение
В этом лабе мы узнаем, как использовать метод lower_bound()
в Vector STL на C++. Практическая реализация этого метода будет показана в лабе.
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом лабе мы узнаем, как использовать метод lower_bound()
в Vector STL на C++. Практическая реализация этого метода будет показана в лабе.
Что такое векторы?
Векторы - это динамические массивы, обладающие дополнительной возможностью изменять свой размер и автоматически настраивать его размер при вставке или удалении элементов. Векторы обеспечивают большую гибкость по сравнению с обычными статическими массивами.
В этом шаге мы создадим пустой вектор и вставим в него несколько элементов. Обратите внимание, что поскольку векторы динамические, нам не нужно указывать размер вектора перед вставкой элементов.
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
// create an empty vector
vector<int> v;
// insert elements into the 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);
}
В этом шаге мы отсортируем элементы вектора в порядке возрастания с использованием функции sort()
из библиотеки <algorithm>
.
// sorting the vector in ascending order
sort(v.begin(), v.end());
lower_bound()
в Vector STLТеперь мы будем использовать метод lower_bound()
, чтобы найти итератор, указывающий на первый элемент, значение которого не меньше заданного значения.
// define the iterator low
vector<int>::iterator low;
// use lower_bound to find the first element that's not less than 35
low = lower_bound(v.begin(), v.end(), 35);
В этом шаге мы выведем индекс нижней границы для значения 35 и добавим некоторые замечания по результату.
// print the index of the lower bound of 35
cout << "\nThe index (starting from 0) of the lower_bound of 35 is: " << (low - v.begin()) << '\n';
// print some notes
cout << "\nNote that as per the definition, it also considers the number itself.\n\n";
Вот полный код для файла main.cpp
:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
// create an empty vector
vector<int> v;
// insert elements into the 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);
// print the elements of the vector
cout << "The elements of the Vector are: ";
for (int i : v)
{
cout << i << " ";
}
// sorting the vector in ascending order
sort(v.begin(), v.end());
// print the sorted vector
cout << "\n\nThe elements of the Vector after Sorting are: ";
for (int i : v)
{
cout << i << " ";
}
// define the iterator low
vector<int>::iterator low;
// use lower_bound to find the first element that's not less than 35
low = lower_bound(v.begin(), v.end(), 35);
// print the index of the lower bound of 35
cout << "\n\nThe index (starting from 0) of the lower_bound of 35 is: " << (low - v.begin()) << '\n';
// print some notes
cout << "\nNote that as per the definition, it also considers the number itself.\n\n";
return 0;
}
Для запуска программы откройте окно терминала и перейдите в директорию, содержащую файл main.cpp
. Используйте следующие команды для компиляции и запуска программы:
g++ main.cpp -o main && ./main
Это должно скомпилировать и запустить программу, и вы должны увидеть следующий вывод:
The elements of the Vector are: 10 12 35 65 21 90
The elements of the Vector after Sorting are: 10 12 21 35 65 90
The index (starting from 0) of the lower_bound of 35 is: 3
Note that as per the definition, it also considers the number itself.
Поздравляем! В этом практическом занятии вы узнали о методе lower_bound()
в контейнере Vector
STL в C++, и увидели его реализацию с использованием векторов. С этими знаниями вы можете создавать, сортировать и искать элементы в векторах с точностью. Отличная работа!