C++ Vector: The Ultimate Guide for Efficient Coding
Vector в языке программирования C++ представляет собой динамический массив, который может изменять свой размер во время выполнения программы. Это отличается от статического массива, который имеет фиксированный размер, определенный во время компиляции.
Для работы с vector в C++ необходимо подключить заголовочный файл
c++
#include
std::vector str_vec;
str_vec.push_back("первый элемент");
str_vec.push_back("второй элемент");
str_vec.push_back("третий элемент");
std::cout << "Размер вектора: " << str_vec.size() << std::endl;
std::cout << "Первый элемент: " << str_vec.at(0) << std::endl;
std::cout << "Последний элемент: " << str_vec.back() << std::endl;
В результате выполнения кода получим следующий вывод:
Размер вектора: 3
Первый элемент: первый элемент
Последний элемент: третий элемент
Как видно из примера, вектор создается с использованием шаблонов, где указывается тип элемента в векторе (в данном случае std::string). Метод push_back добавляет новый элемент в конец вектора. Метод size() возвращает текущий размер вектора. Метод at() возвращает элемент по индексу, где 0 – это первый элемент. Метод back() возвращает последний элемент вектора.
Также возможно использование вектора для хранения элементов произвольных типов данных. Например:
c++
#include
struct Person {
std::string name;
int age;
};
std::vector people_vec;
people_vec.push_back({"Иван", 23});
people_vec.push_back({"Ольга", 30});
people_vec.push_back({"Петр", 45});
std::cout << "Размер вектора: " << people_vec.size() << std::endl;
std::cout << "Имя первого элемента: " << people_vec.at(0).name << std::endl;
std::cout << "Возраст второго элемента: " << people_vec.at(1).age << std::endl;
std::cout << "Имя последнего элемента: " << people_vec.back().name << std::endl;
Результат выполнения кода будет следующим:
Размер вектора: 3
Имя первого элемента: Иван
Возраст второго элемента: 30
Имя последнего элемента: Петр
В данном случае вектор хранит элементы типа Person, который определен как структура с двумя полями: строковым name и целочисленным age. Оператор {} позволяет инициализировать поля структуры в момент добавления нового элемента в вектор.
Также vector поддерживает итераторы для обхода элементов вектора.
c++
#include
std::vector vec = {1, 2, 3, 4, 5};
std::vector::iterator it;
for (it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
В данном примере vec – вектор из пяти целочисленных значений. Итератор vec.begin() возвращает итератор на первый элемент вектора, а vec.end() возвращает итератор на элемент, следующий за последним элементом вектора. Значения итератора увеличиваются в цикле с помощью оператора ++it. Оператор *it извлекает соответствующее значение элемента вектора.
Также векторы поддерживают многие другие методы, такие как erase(), insert(), resize() и др. Они позволяют изменять размер и содержимое вектора по мере необходимости и существенно облегчают работу с данными в программировании на C++.