Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

std::vector в C++: динамические массивы, итераторы и практические примеры

Что такое std::vector в C++?

std::vector — это динамический массив, который автоматически меняет свой размер при добавлении или удалении элементов. Элементы хранятся непрерывно, обеспечивая быстрый индексированный доступ и перебор через итераторы.

Вставка в конец выполняется за амортизированное постоянное время. Удаление последнего элемента — тоже постоянное время, в то время как вставка или удаление в начале или середине требует сдвига элементов, что линейно по времени.

Когда использовать vector?

Как инициализировать векторы в C++

std::vector<тип> имя (размер, значение); // размер и значение опциональны

Итераторы

Итераторы предоставляют указатель-подобный интерфейс к элементам вектора. Часто используемые функции:

Модификаторы

Модификаторы изменяют содержимое вектора. Ключевые функции:

Пример 1: Базовая итерация


#include <iostream>
#include <vector>
int main() {
    std::vector<int> nums;
    for (int a = 1; a <= 5; ++a) {
        nums.push_back(a);
    }
    std::cout << "Output from begin and end: ";
    for (auto it = nums.begin(); it != nums.end(); ++it) {
        std::cout << *it << ' ';
    }
    std::cout << "\nOutput from cbegin and cend: ";
    for (auto it = nums.cbegin(); it != nums.cend(); ++it) {
        std::cout << *it << ' ';
    }
    return 0;
}

Вывод:

std::vector в C++: динамические массивы, итераторы и практические примеры

Пример 2: Продвинутые модификаторы


#include <iostream>
#include <vector>
int main() {
    std::vector<int> nums;
    nums.assign(5, 1); // пять элементов, все инициализированы 1
    std::cout << "Vector contents: ";
    for (size_t i = 0; i < nums.size(); ++i) {
        std::cout << nums[i] << ' ';
    }
    nums.push_back(2);
    std::cout << "\nLast element: " << nums.back();
    nums.pop_back();
    std::cout << "\nVector contents: ";
    for (int a : nums) std::cout << a << ' ';
    nums.insert(nums.begin(), 7);
    std::cout << "\nFirst element: " << nums.front();
    nums.clear();
    std::cout << "\nSize after clear(): " << nums.size();
    return 0;
}

Вывод:

std::vector в C++: динамические массивы, итераторы и практические примеры

Функции ёмкости (capacity)

Определение и управление характеристиками хранения вектора:

Пример 3: Исследование ёмкости


#include <iostream>
#include <vector>
int main() {
    std::vector<int> vector1;
    for (int x = 1; x <= 10; ++x) {
        vector1.push_back(x);
    }
    std::cout << "Vector size: " << vector1.size() << std::endl;
    std::cout << "Vector capacity: " << vector1.capacity() << std::endl;
    std::cout << "Maximum size of vector: " << vector1.max_size() << std::endl;
    vector1.resize(5);
    std::cout << "Vector size after resizing: " << vector1.size() << std::endl;
    if (!vector1.empty())
        std::cout << "Vector is not empty" << std::endl;
    else
        std::cout << "Vector is empty" << std::endl;
    return 0;
}

Вывод:

std::vector в C++: динамические массивы, итераторы и практические примеры

Ключевые выводы

Язык C

  1. Стандартные библиотечные функции в C: практическое руководство
  2. Операторы в C++: типы, примеры и практические программы
  3. Цикл do-while в C++: синтаксис, примеры и вложенные циклы
  4. Оператор switch-case в C++: синтаксис, применение и практические примеры
  5. Динамическое выделение массивов в C++: практическое руководство с примерами кода
  6. Указатели в C++: концепции, примеры и практические применения
  7. Перегрузка операторов в C++: практическое руководство с примерами кода
  8. Освоение std::list в C++: синтаксис, функции и практические примеры
  9. Функции в C++: подробное объяснение с практическими примерами кода
  10. C++ Struct vs Class: ключевые отличия, синтаксис и лучшие сценарии использования