Обмен технологиями

[Влюбляясь в C] Подробное объяснение использования векторов.

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Привет~ одноклассники, в этой статье мы углубимся в векторный контейнер в C. Будучи одним из наиболее часто используемых динамических массивов в стандартной библиотеке шаблонов (STL), вектор обеспечивает гибкое хранение элементов и эффективные методы доступа. Мы начнем с базовых знаний и постепенно изучим операции его создания, инициализации, обхода, управления пространством, добавления, удаления, проверки и модификации. С помощью подробных примеров и анализа мы надеемся помочь читателям полностью понять и освоить навыки и меры предосторожности при использовании векторов.

1: Введение в вектор

вектордокумент

  1. Вектор — это контейнер последовательности, который представляет массив переменного размера.
  2. Как и массивы, векторы также используют непрерывное пространство для хранения элементов. Это означает, что вы можете использовать индексы для доступа к элементам вектора, что так же эффективно, как и к массиву. Но в отличие от массива его размер можно изменять динамически, и его размер будет автоматически обрабатываться контейнером.
  3. По сути, вектор использует динамически выделяемый массив для хранения своих элементов. При вставке новых элементов размер массива необходимо изменить, чтобы увеличить место для хранения. Это делается путем выделения нового массива и последующего перемещения всех элементов в этот массив. С точки зрения времени это относительно затратная задача, поскольку размер вектора не изменяется каждый раз, когда в контейнер добавляется новый элемент.
  4. Стратегия векторного распределения пространства: вектор выделяет некоторое дополнительное пространство для возможного роста, поскольку пространство для хранения больше, чем фактическое необходимое пространство для хранения. Разные библиотеки используют разные стратегии для оптимального использования и перераспределения пространства. Но в любом случае перераспределение должно логарифмически увеличиваться по размеру интервала, чтобы вставка элемента в конец производилась за постоянное время.
  5. Таким образом, вектор занимает больше места для хранения, чтобы получить возможность управлять пространством для хранения и динамически эффективно расти.
  6. По сравнению с другими контейнерами динамических последовательностей (deque, list иforward_list), вектор более эффективен при доступе к элементам, а добавление и удаление элементов в конце относительно эффективно. Для других операций удаления и вставки, не находящихся в конце, эффективность еще ниже. Лучше использовать унифицированные итераторы и ссылки, чем list иforward_list.


Есть три области использования STL: возможность его использования, возможность его понимания и возможность его расширения. Далее мы изучим вектор. Мы также воспользуемся этим методом, чтобы изучить его.

2: Создание и инициализация вектора

Нужен заголовочный файл#include