Вектор в C++ Стандартная библиотека шаблонов (STL) с примером
Что такое C++ Вектор?
A C++ вектор представляет собой динамический массив, способный автоматически изменять свой размер. Изменение размера происходит после добавления или удаления элемента из вектора. Хранение осуществляется контейнером автоматически. Элементы вектора хранятся в непрерывном хранилище. Это позволяет C++ программисты могут получать доступ к элементам вектора и перемещаться по ним с помощью итераторов.
Вставка новых данных в вектор выполняется в его конце. Это требует разного времени. Удаление элемента из вектора занимает постоянное время. Причина в том, что нет необходимости изменять размер вектора. Вставка или удаление элемента в начале вектора занимает линейное время.
Когда использовать вектор?
A C++ Вектор следует использовать при следующих обстоятельствах:
- При работе с элементами данных, которые постоянно изменяются.
- Если размер данных неизвестен до начала, вектор не потребует от вас установки максимального размера контейнера.
Как инициализировать векторы в C++
Синтаксис векторов в C++ это:
vector <data-type> name (items)
- Как показано выше, мы начинаем с ключевого слова вектор.
- Тип данных — это тип данных элементов, которые будут храниться в векторе.
- Имя — это имя вектора или элементов данных.
- Элементы обозначают количество элементов для данных вектора. Этот параметр является необязательным.
итераторы
Цель итераторов — помочь нам получить доступ к элементам, хранящимся в векторе. Это объект, который работает как указатель. Вот общие итераторы, поддерживаемые C++ векторы:
- вектор:: начало(): он дает итератор, указывающий на первый элемент вектора.
- вектор:: конец(): он дает итератор, указывающий на последний элемент вектора.
- вектор::cbegin(): это то же самое, что и вектор::begin(), но у него нет возможности изменять элементы.
- вектор::cend(): это то же самое, что и вектор::end(), но он не может изменять элементы вектора.
Модификаторы
Модификаторы используются для изменения значения указанного типа данных. Вот общие модификаторы в C++:
- вектор::push_back(): Этот модификатор смещает элементы сзади.
- вектор::вставка(): Для вставки новых элементов в вектор в указанном месте.
- вектор::pop_back(): Этот модификатор удаляет векторные элементы сзади.
- вектор:: стереть(): Он используется для удаления диапазона элементов из указанного места.
- вектор::очистить(): Он удаляет все векторные элементы.
Пример 1
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; for (int a = 1; a <= 5; a++) nums.push_back(a); cout << "Output from begin and end: "; for (auto a = nums.begin(); a != nums.end(); ++a) cout << *a << " "; cout << "\nOutput from cbegin and cend: "; for (auto a = nums.cbegin(); a != nums.cend(); ++a) cout << *a << " "; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в наш код. Это позволит нам читать и писать в консоль.
- Включите векторный заголовочный файл в наш код. Это позволит нам работать с векторами в C++.
- Включите пространство имен std, чтобы использовать его классы и функции, не вызывая его.
- Вызовите функцию main(), внутри которой должна быть добавлена логика программы.
- { отмечает начало тела функции main().
- Объявите вектор с именем nums для хранения набора целых чисел.
- Создайте цикл for, который поможет нам перебирать вектор. Переменная поможет нам перебирать элементы вектора, начиная с 1st в 5th элементов.
- Вставьте элементы в вектор num сзади. Для каждой итерации это будет добавлять к вектору текущее значение переменной a, которое составляет от 1 до 5.
- Напечатайте текст на консоли
- Используйте переменную-итератор a для перебора элементов векторных чисел от начала до элемента за концом. Обратите внимание, что мы используем итераторы Vector::begin() и вектор::end().
- Выведите значения, на которые указывает переменная итератора an, на консоли для каждой итерации.
- Напечатайте текст на консоли. \n — это символ новой строки, перемещающий курсор на новую строку для печати оттуда.
- Используйте переменную-итератор для перебора элементов векторных чисел от начала до элемента за концом. Обратите внимание, что мы используем итераторы Vector::cbegin() и вектор::cend().
- Выведите значения, на которые указывает переменная итератора a, на консоли для каждой итерации.
- Основная функция должна возвращать значение, если программа работает успешно.
- Конец тела функции main().
Пример 2
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; nums.assign(5, 1); cout << "Vector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.push_back(2); int n = nums.size(); cout << "\nLast element: " << nums[n - 1]; nums.pop_back(); cout << "\nVector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.insert(nums.begin(), 7); cout << "\nFirst element: " << nums[0]; nums.clear(); cout << "\nSize after clear(): " << nums.size(); }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в наш код, чтобы использовать его функции.
- Включите файл заголовка вектора в наш код, чтобы использовать его. Функции.
- Включите пространство имен std, чтобы использовать его классы без его вызова.
- Вызовите функцию main(). Логика программы должна быть добавлена внутри ее тела.
- Начало тела функции main().
- Объявите вектор с именем nums для хранения целочисленных значений.
- Сохраните 5 элементов в векторных числах. Каждый со значением 1.
- Напечатайте текст на консоли
- Используйте переменную-итератор a для перебора элементов векторных чисел.
- Выведите значения векторных чисел на консоль для каждой итерации.
- Добавьте значение 2 в конец векторных чисел.
- Объявите целочисленную переменную n для хранения размера векторных чисел.
- Распечатайте последнее значение векторных чисел рядом с другим текстом. Он должен вернуть 2.
- Удалите последний элемент из векторных чисел. 2 будут удалены.
- Вывести текст на консоль. \n перемещает курсор на новую строку, чтобы напечатать там текст.
- Используйте переменную-итератор a для перебора элементов векторных чисел.
- Выведите значения векторных чисел на консоль для каждой итерации.
- Вставьте значение 7 в начало векторных чисел.
- Распечатайте первое значение векторных чисел рядом с другим текстом. Должно вернуться 7.
- Удалите все элементы из векторных чисел.
- Напечатайте размер векторного числа рядом с другим текстом после очистки всего содержимого. Он должен вернуть 0.
- Конец тела функции main().
Необходимый кадровый потенциал
Используйте следующие функции, чтобы определить емкость вектора:
- Размер() -Он возвращает количество элементов в векторе.
- Макс_размер() -Он возвращает наибольшее количество элементов, которые может хранить вектор.
- Емкость () –It возвращает объем памяти, выделенный вектору.
- Изменить размер () – Это изменяет размер контейнера, чтобы он содержал n элементов. Если текущий размер вектора больше n, задние элементы будут удалены из вектора. Если текущий размер вектора меньше n, в конец вектора будут добавлены дополнительные элементы.
- Пусто () –it возвращает true, если вектор пуст. В противном случае он возвращает false.
Пример 3
#include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; for (int x = 1; x <= 10; x++) vector1.push_back(x); cout << "Vector size: " << vector1.size()<< endl; cout << "Vector capacity: " << vector1.capacity() << endl; cout << "Maximum size of vector: " << vector1.max_size()<< endl; vector1.resize(5); cout << "Vector size after resizing: " << vector1.size() << endl; if (vector1.empty() == false) cout << "Vector is not empty"<<endl; else cout << "Vector is empty"<<endl; return 0; }
Вывод:
Вот скриншот кода:
Пояснение к коду:
- Включите заголовочный файл iostream в наш код, чтобы использовать его функцию.
- Включите файл заголовка вектора в наш код, чтобы использовать его функции.
- Включите пространство имен std в наш код, чтобы использовать его классы, не вызывая его.
- Вызовите функцию main(). Логику программы следует добавить в тело этой функции.
- Создайте вектор с именем Vector1 для хранения целых чисел.
- Используйте цикл for для создания переменной x со значениями от 1 до 10.
- Вставьте значения переменной x в вектор.
- Напечатайте размер вектора рядом с другим текстом на консоли.
- Напечатайте емкость вектора вместе с другим текстом на консоли.
- Выведите максимальное количество элементов, которые вектор может содержать вместе с другим текстом на консоли.
- Измените размер вектора, чтобы он содержал только 5 элементов.
- Распечатайте новый размер вектора рядом с другим текстом.
- Проверьте, не пуст ли вектор.
- Выведите текст на консоль, если вектор не пуст.
- Используйте оператор else, чтобы указать, что делать, если вектор пуст.
- Текст для печати на консоли, если вектор пуст.
- Программа должна вернуть значение после успешного завершения.
- Конец тела функции main().
Итого
- A C++ вектор — это динамический массив, способный автоматически изменять свой размер при добавлении или удалении из него элемента.
- Хранение вектора автоматически обрабатывается контейнером.
- Элементы вектора хранятся в непрерывном хранилище, чтобы к ним можно было получить доступ, а затем пройти их с помощью итераторов.
- Вставка новых данных в вектор выполняется в его конце.
- Вставка данных в вектор занимает разное время.
- Удаление элемента из вектора занимает постоянное время.
- Вставка или удаление элемента в начале занимает линейное время.
- Векторы следует использовать при работе с элементами данных, которые постоянно изменяются.
- Кроме того, вы можете использовать векторы, если размер данных неизвестен до начала.