[C++] STL — использование вектора, введение и использование векторных функций добавления, удаления и модификации, push_back и pop_back, оператор[]

1. Использование вектора

  полное введение в вектор

  вектор и значение, векторный конструктор, векторный итератор

  Использование пространственных функций, связанных с вектором

2. Добавляйте, удаляйте, проверяйте и изменяйте вектор

вставьте сюда описание изображения

(1) хвостовая заглушка push_back

  Функция push_back() используется для добавления элемента в конец контейнера. Он принимает один аргумент, значение (или объект) добавляемого элемента. По мере добавления элементов в векторный контейнер его размер динамически увеличивается для размещения новых добавленных элементов.

  Ниже приведен пример определения и использования функции push_back():

  Мы создаем пустой контейнер std::vector numbers. Затем используйте функцию push_back() для добавления элементов в контейнер. Мы добавили три элемента подряд, 10, 20 и 30.

  Наконец, мы распечатываем размер и элементы контейнера и видим, что размер контейнера равен 3, а элементов в контейнере — 10, 20 и 30 соответственно.

  Используя функцию push_back(), мы можем легко добавлять элементы в контейнер std::vector без изменения размера контейнера вручную. Это делает использование вектора более удобным и гибким в тех случаях, когда элементы необходимо добавлять динамически.

#include <iostream>
#include <vector>

int main() {
    
    
    std::vector<int> numbers; // 创建一个空的int类型的vector容器
    
    numbers.push_back(10); // 添加元素 10
    numbers.push_back(20); // 添加元素 20
    numbers.push_back(30); // 添加元素 30

    std::cout << "容器的大小为:" << numbers.size() << std::endl;
    std::cout << "容器的元素为:";
    for (const auto& number : numbers) {
    
    
        std::cout << number << " ";
    }
    std::cout << std::endl;

    return 0;
}

//容器的大小为:3
//容器的元素为:10 20 30

(2) удаление хвоста pop_back

  Функция pop_back() используется для удаления последнего элемента в контейнере. Он не принимает никаких параметров. Вызов функции pop_back() уменьшит размер контейнера на 1.

  Ниже приведен пример определения и использования функции pop_back():

  Сначала мы создаем контейнер чисел std::vector с 5 элементами. Затем распечатайте начальный размер и элементы контейнера. Затем мы вызываем функцию pop_back(), чтобы удалить последний элемент в контейнере.

  В этом случае последний элемент 50 удаляется из контейнера. Наконец, мы снова печатаем размер и элементы контейнера, и мы видим, что размер контейнера уменьшается на 1, а элементы становятся 10 20 30 40.

  Используя функцию pop_back(), мы можем удобно удалить последний элемент из контейнера std::vector без изменения размера контейнера вручную. Это полезно в ситуациях, когда элементы необходимо добавлять и удалять в определенном порядке.

#include <iostream>
#include <vector>

int main() {
    
    
    std::vector<int> numbers = {
    
    10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器
    
    std::cout << "初始容器的大小为:" << numbers.size() << std::endl;
    std::cout << "初始容器的元素为:";
    for (const auto& number : numbers) {
    
    
        std::cout << number << " ";
    }
    std::cout << std::endl;

    numbers.pop_back(); // 移除最后一个元素

    std::cout << "调用pop_back()后的容器的大小为:" << numbers.size() << std::endl;
    std::cout << "调用pop_back()后的容器的元素为:";
    for (const auto& number : numbers) {
    
    
        std::cout << number << " ";
    }
    std::cout << std::endl;

    return 0;
}

//初始容器的大小为:5
//初始容器的元素为:10 20 30 40 50 
//调用pop_back()后的容器的大小为:4
//调用pop_back()后的容器的元素为:10 20 30 40 

(3) найти поиск

  Функция find() используется для поиска заданного значения в контейнере и возвращает итератор, указывающий на первый соответствующий элемент. Если соответствующий элемент не найден, возвращается итератор end(), указывающий на конец контейнера.

  Ниже приведен пример определения и использования функции find():

  С помощью функции find() мы можем легко найти заданное значение в контейнере std::vector и получить позицию элемента в контейнере. Это полезно для поиска и определения местоположения определенных элементов. Обратите внимание, что заголовочный файл <algorithm> должен быть включен перед использованием функции find().

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    
    
    std::vector<int> numbers = {
    
    10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器
    
    // 在容器中查找值为 30 的元素
    auto it = std::find(numbers.begin(), numbers.end(), 30);

    if (it != numbers.end()) {
    
    
        std::cout << "找到值为 30 的元素在容器中的位置:" << std::distance(numbers.begin(), it) << std::endl;
    }
    else {
    
    
        std::cout << "未找到值为 30 的元素" << std::endl;
    }

    return 0;
}

//找到值为 30 的元素在容器中的位置:2

(4) вставка вставляет val перед позицией

  Функция insert() используется для вставки одного или нескольких элементов перед указанной позицией. Он принимает два аргумента, первый — это итератор позиции для вставки, а второй — элемент или диапазон для вставки.

  где pos — итератор, указывающий позицию вставки, а val — значение вставляемого элемента.

  С помощью функции insert() мы можем вставить один или несколько элементов в указанную позицию в контейнере std::vector, тем самым реализуя операцию вставки элементов в контейнер. Это полезно для вставки нового элемента в определенное место или для вставки непрерывного участка элементов в середине контейнера.

  Ниже приведен пример определения и использования функции insert():

  1. Вставьте элемент в указанную позицию:

#include <iostream>
#include <vector>

int main() {
    
    
    std::vector<int> numbers = {
    
    10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器
    
    // 在位置 index=2 插入一个元素 15
    auto it = numbers.insert(numbers.begin() + 2, 15);

    std::cout << "容器的元素为:";
    for (const auto& number : numbers) {
    
    
        std::cout << number << " ";
    }
    std::cout << std::endl;

    return 0;
}

//容器的元素为:10 20 15 30 40 50

  2. Вставьте несколько элементов в указанную позицию:

#include <iostream>
#include <vector>

int main() {
    
    
    std::vector<int> numbers = {
    
    10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器
    
    // 在位置 index=2 插入三个元素: 15, 25, 35
    numbers.insert(numbers.begin() + 2, {
    
    15, 25, 35});

    std::cout << "容器的元素为:";
    for (const auto& number : numbers) {
    
    
        std::cout << number << " ";
    }
    std::cout << std::endl;

    return 0;
}

//容器的元素为:10 20 15 25 35 30 40 50

(5) стирание удаляет данные в указанном месте

  Функция Erase() используется для удаления элемента или диапазона элементов из контейнера. Он принимает один или два аргумента, первый из которых является итератором удаляемой позиции или диапазона.

  Используя функцию erase(), мы можем удалить элемент или часть элементов в указанной позиции из контейнера std::vector, чтобы реализовать операцию удаления элементов в контейнере. Это полезно для удаления элемента в определенной позиции или для удаления непрерывного участка элементов.

  Ниже приведено определение и пример использования функции erase():

  1. Удалить элемент в указанной позиции:

#include <iostream>
#include <vector>

int main() {
    
    
    std::vector<int> numbers = {
    
    10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器
    
    // 删除位置为 index=2 的元素
    auto it = numbers.erase(numbers.begin() + 2);

    std::cout << "容器的元素为:";
    for (const auto& number : numbers) {
    
    
        std::cout << number << " ";
    }
    std::cout << std::endl;

    return 0;
}

//容器的元素为:10 20 40 50

  2. Удалить сегмент элементов в указанном диапазоне:

#include <iostream>
#include <vector>

int main() {
    
    
    std::vector<int> numbers = {
    
    10, 20, 30, 40, 50}; // 创建一个包含5个元素的int类型的vector容器
    
    // 删除从 index=1 到 index=3 的元素
    numbers.erase(numbers.begin() + 1, numbers.begin() + 4);

    std::cout << "容器的元素为:";
    for (const auto& number : numbers) {
    
    
        std::cout << number << " ";
    }
    std::cout << std::endl;

    return 0;
}

//容器的元素为:10 50

(6) swap обменивает пространство данных двух векторов

  Функция swap() используется для обмена значениями двух объектов. Он принимает два аргумента: объект, значения которого подлежат обмену.

  Функцию swap() можно использовать для обмена значениями объектов любого типа, включая базовые типы данных, пользовательские типы и контейнеры STL. Это очень удобная функция, которая может быстро заменить значение объекта, избегая ручного назначения временных переменных.

  Ниже приведен пример определения и использования функции swap():

#include <iostream>

int main() {
    
    
    int a = 10;
    int b = 20;

    std::cout << "交换前,a = " << a << ", b = " << b << std::endl;

    std::swap(a, b);

    std::cout << "交换后,a = " << a << ", b = " << b << std::endl;

    return 0;
}

//交换前,a = 10, b = 20
//交换后,a = 20, b = 10

(7) доступ к operator[ ] осуществляется как к массиву

  operator[] — это перегруженный оператор, используемый для доступа к элементам контейнеров, массивов, строк и подобных индексируемых структур данных по индексу. Это позволяет нам использовать контейнеры, такие как массивы.

  Используя оператор operator[], мы можем получить доступ к элементам в контейнере на основе их индекса, как и при использовании массива. Обратите внимание, что индексация начинается с 0 и доходит до контейнера size()-1.

  Обратите внимание, что при использовании оператора operator[] для доступа к элементам контейнера проверка границ не выполняется. Поэтому поведение undefined возникает, если индекс превышает допустимый диапазон контейнера. В практических приложениях очень важно обеспечить достоверность индекса.

  Ниже приведено определение и пример использования operator[]:

#include <iostream>
#include <vector>

int main() {
    
    
    std::vector<int> numbers = {
    
    10, 20, 30, 40, 50};

    std::cout << "容器的元素为:";
    for (size_t i = 0; i < numbers.size(); ++i) {
    
    
        std::cout << numbers[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

//容器的元素为:10 20 30 40 50

Guess you like

Origin blog.csdn.net/Crocodile1006/article/details/131797666