Программа на CPP с использованием метода lower_bound() в контейнере Vector STL

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе мы узнаем, как использовать метод lower_bound() в Vector STL на C++. Практическая реализация этого метода будет показана в лабе.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/AdvancedConceptsGroup(["Advanced Concepts"]) 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{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} cpp/arrays -.-> lab-96218{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} cpp/for_loop -.-> lab-96218{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} cpp/function_parameters -.-> lab-96218{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} cpp/pointers -.-> lab-96218{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} cpp/output -.-> lab-96218{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} cpp/string_manipulation -.-> lab-96218{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} cpp/standard_containers -.-> lab-96218{{"Программа на CPP с использованием метода lower_bound() в контейнере Vector STL"}} end

Создание вектора и заполнение его целыми числами

Что такое векторы?

Векторы - это динамические массивы, обладающие дополнительной возможностью изменять свой размер и автоматически настраивать его размер при вставке или удалении элементов. Векторы обеспечивают большую гибкость по сравнению с обычными статическими массивами.

В этом шаге мы создадим пустой вектор и вставим в него несколько элементов. Обратите внимание, что поскольку векторы динамические, нам не нужно указывать размер вектора перед вставкой элементов.

#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++, и увидели его реализацию с использованием векторов. С этими знаниями вы можете создавать, сортировать и искать элементы в векторах с точностью. Отличная работа!