Вектор в стандартной библиотеке шаблонов C ++ (STL) с примером

Содержание:

Anonim

Что такое вектор C ++?

С ++ ВЕКТОР представляет собой динамический массив , способные изменения размера автоматически. Изменение размера происходит после того, как элемент был добавлен или удален из вектора. Хранение осуществляется автоматически контейнером. Элементы вектора хранятся в непрерывном хранилище. Это позволяет программистам на C ++ получать доступ к элементам вектора и перемещаться по ним с помощью итераторов.

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

В этом руководстве по C ++ вы узнаете:

  • Что такое вектор C ++?
  • Когда использовать вектор?
  • Как инициализировать векторы в C ++
  • Итераторы
  • Модификаторы
  • Пример 1
  • Пример 2
  • Емкость
  • Пример 3

Когда использовать вектор?

Вектор C ++ следует использовать в следующих случаях:

  • При работе с постоянно изменяющимися элементами данных.
  • Если размер данных до начала неизвестен, для вектора не потребуется устанавливать максимальный размер контейнера.

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

Синтаксис векторов в C ++:

vector  name (items)
  • Как показано выше, мы начинаем с ключевого слова vector.
  • Тип данных - это тип данных элементов, которые будут храниться в векторе.
  • Имя - это имя вектора или элементов данных.
  • Пункты обозначают количество элементов данных вектора. Этот параметр не является обязательным.

Итераторы

Цель итераторов - помочь нам получить доступ к элементам, хранящимся в векторе. Это объект, который работает как указатель. Вот общие итераторы, поддерживаемые векторами C ++:

  • vector :: begin (): дает итератор, указывающий на первый элемент вектора.
  • vector :: end (): дает итератор, который указывает на элемент вектора, прошедший за конец.
  • vector :: cbegin (): это то же самое, что vector :: begin (), но у него нет возможности изменять элементы.
  • vector :: cend (): то же самое, что vector :: end (), но не может изменять векторные элементы.

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

Модификаторы используются для изменения значения указанного типа данных. Вот общие модификаторы в C ++:

  • vector :: push_back (): этот модификатор толкает элементы сзади.
  • vector :: insert (): для вставки новых элементов в вектор в указанном месте.
  • vector :: pop_back (): этот модификатор удаляет векторные элементы сзади.
  • vector :: erase (): используется для удаления диапазона элементов из указанного места.
  • vector :: clear (): удаляет все элементы вектора.

Пример 1

#include #include using namespace std;int main(){vector 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;}

Выход:

Вот скриншот кода:

Пояснение к коду:

  1. Включите файл заголовка iostream в наш код. Это позволит нам читать и писать на консоли.
  2. Включите файл заголовка вектора в наш код. Это позволит нам работать с векторами на C ++.
  3. Включите пространство имен std, чтобы использовать его классы и функции, не вызывая его.
  4. Вызвать функцию main (), внутри которой нужно добавить логику программы.
  5. {Отмечает начало тела функции main ().
  6. Объявите вектор с именем nums для хранения набора целых чисел.
  7. Создайте цикл for, который поможет нам перебирать вектор. Переменная поможет нам перебирать элементы вектора, от 1- го до 5- го элементов.
  8. Вставьте элементы в вектор с номером сзади. Для каждой итерации это добавит в вектор текущее значение переменной a, которое составляет от 1 до 5.
  9. Напечатайте текст на консоли
  10. Используйте переменную итератора a, чтобы перебирать элементы векторных чисел от начала до последнего элемента. Обратите внимание, что мы используем итераторы vector :: begin () и vector :: end ().
  11. Выведите значения, на которые указывает переменная итератора an, на консоли для каждой итерации.
  12. Напечатайте текст на консоли. \ N - это символ новой строки, перемещающий курсор на новую строку для печати оттуда.
  13. Используйте переменную итератора, чтобы перебирать элементы векторных чисел от начала до последнего элемента. Обратите внимание, что мы используем итераторы vector :: cbegin () и vector :: cend ().
  14. Выведите значения, на которые указывает переменная итератора a, на консоли для каждой итерации.
  15. Функция main должна возвращать значение, если программа выполняется успешно.
  16. Конец тела функции main ().

Пример 2

#include #include using namespace std;int main(){vector 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();}

Выход:

Вот скриншот кода:

Пояснение к коду:

  1. Включите файл заголовка iostream в наш код, чтобы использовать его функции.
  2. Включите файл заголовка вектора в наш код, чтобы использовать его функции.
  3. Включите пространство имен std, чтобы использовать его классы, не вызывая его.
  4. Вызовите функцию main (). Логика программы должна быть добавлена ​​внутрь ее тела.
  5. Начало тела функции main ().
  6. Объявите вектор с именем nums для хранения некоторых целочисленных значений.
  7. Сохраните 5 элементов в векторных числах. Каждый имеет значение 1.
  8. Напечатайте текст на консоли
  9. Используйте переменную итератора a для перебора элементов векторных чисел.
  10. Вывести значения векторных номеров на консоль для каждой итерации.
  11. Добавьте значение 2 в конец номеров векторов.
  12. Объявите целочисленную переменную n для хранения размера векторных чисел.
  13. Выведите последнее значение векторных чисел рядом с другим текстом. Он должен вернуть 2.
  14. Удалите последний элемент из числа векторов. 2 будут удалены.
  15. Напечатайте текст на консоли. \ N перемещает курсор на новую строку, чтобы напечатать там текст.
  16. Используйте переменную итератора a для перебора элементов векторных чисел.
  17. Вывести значения векторных номеров на консоль для каждой итерации.
  18. Вставьте значение 7 в начало номеров векторов.
  19. Выведите первое значение векторных чисел рядом с другим текстом. Он должен вернуть 7.
  20. Удалите все элементы из векторных номеров.
  21. Распечатайте размер вектора рядом с другим текстом после очистки всего содержимого. Он должен вернуть 0.
  22. Конец тела функции main ().

Емкость

Используйте следующие функции для определения емкости вектора:

  • Size () - возвращает количество элементов в векторе.
  • Max_size () - возвращает максимальное количество элементов, которое может хранить вектор.
  • Capacity () - возвращает объем дискового пространства, выделенного вектору.
  • Resize () - изменяет размер контейнера, чтобы он содержал n элементов. Если текущий размер вектора больше n, задние элементы будут удалены из вектора. Если текущий размер вектора меньше n, дополнительные элементы будут добавлены в конец вектора.
  • Empty () -i t возвращает true, если вектор пуст, иначе возвращает false.

Пример 3

#include #include using namespace std;int main() {vector 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"<

Выход:

Вот скриншот кода:

Пояснение к коду:

  1. Включите файл заголовка iostream в наш код, чтобы использовать его функцию.
  2. Включите файл заголовка вектора в наш код, чтобы использовать его функции.
  3. Включите пространство имен std в наш код, чтобы использовать его классы без его вызова.
  4. Вызовите функцию main (). Логика программы должна быть добавлена ​​в тело этой функции.
  5. Создайте вектор с именем vector1 для хранения целых чисел.
  6. Используйте цикл for для создания переменной x со значениями от 1 до 10.
  7. Вставьте значения переменной x в вектор.
  8. Напечатайте размер вектора рядом с другим текстом на консоли.
  9. Напечатайте емкость вектора рядом с другим текстом на консоли.
  10. Выведите максимальное количество элементов, которые вектор может содержать рядом с другим текстом на консоли.
  11. Измените размер вектора, чтобы он содержал только 5 элементов.
  12. Напечатайте новый размер вектора рядом с другим текстом.
  13. Проверить, не пустой ли вектор.
  14. Напечатайте текст на консоли, если вектор не пустой.
  15. Используйте оператор else, чтобы указать, что делать, если вектор пуст.
  16. Текст для печати на консоли, если вектор пуст.
  17. Программа должна вернуть значение после успешного завершения.
  18. Конец тела функции main ().

Резюме:

  • Вектор C ++ - это динамический массив, способный автоматически изменять размер при добавлении или удалении элемента.
  • Хранение вектора обрабатывается автоматически контейнером.
  • Элементы вектора хранятся в непрерывном хранилище, чтобы к ним можно было получить доступ, а затем пройти их с помощью итераторов.
  • Вставка новых данных в вектор выполняется в его конце.
  • Вставка данных в вектор занимает разное время.
  • Удаление элемента из вектора занимает постоянное время.
  • Вставка или удаление элемента в начале занимает линейное время.
  • Векторы следует использовать при работе с постоянно изменяющимися элементами данных.
  • Кроме того, вы можете использовать векторы, если размер данных не был известен до начала.