Разница между вектором C ++ и массивом

Векторы представляют собой контейнеры последовательности, которые используют места непрерывного хранения для хранения элементов. Они могут эффективно управлять хранилищем и динамически расти. Эти возможности имеют свою цену: векторы потребляют больше памяти в обмен на способность обрабатывать хранилище и динамически увеличиваться в размере.

вектор v; где v - переменная типа Vector, хранящая целочисленные элементы. Это известно как инициализация вектора:

Сохранить случайное целое число с помощью функции «push_back»:

v.push_back (11);

v.push_back (12);

v.push_back (13);

v.push_back (14);

Используя функцию «pop_back ()», удалить последний элемент:

v.pop_back ();

Чтобы удалить первый элемент, мы можем использовать функцию erase ():

v.erase (v.begin ());

Доступ к первому элементу с помощью функции front ();

v.front ();

Доступ к последнему элементу с помощью функции back ();

v.back ();

В массиве хранится последовательная коллекция фиксированного размера элементов одного типа. Он используется для хранения коллекции данных, но массив можно рассматривать как коллекцию переменных одного типа, хранящихся в смежных местах памяти. Все массивы состоят из смежных областей памяти, причем самый низкий адрес соответствует первому элементу, а самый высокий адрес - последнему элементу.

Объявите массив в C ++:

тип array_name (array_size); // Тип используется для указания типа элементов в массиве

Инициализация массива:

двойные значения (5) = (23, 7, 32, 1, 66, 7, 11, 1, 44, 6);

C ++ имеет многомерный массив:

Введите имя (размер1) (размер2)… .. (размерN);

Инициализация двумерного массива:

int a (3) (4) = ((0, 1, 2), (4, 5, 6, 7), (8, 9, 10, 11));

Передача указателя на массив путем указания имени массива без индекса:

void dummyFunction (int * param) (

)

С индексом:

void dummyFunction (int param ()) (

)

Сравнение лицом к лицу между вектором C ++ и массивом (инфографика)

Ниже представлено 8 лучших отличий между вектором и массивом в c ++.

Ключевая разница между вектором C ++ и массивом

Оба C ++ Vector vs Array являются популярным выбором на рынке; Давайте обсудим некоторые основные различия между вектором и массивом в c ++:

  1. Vector - это последовательные контейнеры, а Array - структура данных более низкого уровня.
  2. Vector поставляется в виде шаблонного класса в C ++ с родителем в качестве класса Collection, тогда как Array является структурой данных более низкого уровня со своими собственными специфическими свойствами.
  3. Вектор не основан на индексе и имеет функции и конструкторы, в то время как массивы являются структурами данных на основе индекса, причем наименьший адрес предоставляется первому элементу, а наибольший адрес предоставляется последнему элементу в массиве.
  4. Вектор является динамическим по своей природе, то есть его размер автоматически увеличивается при увеличении количества вставляемых элементов, тогда как массивы имеют фиксированную структуру размера, после инициализации их невозможно сбросить.
  5. Вектор лучше подходит для частой вставки и удаления, тогда как массивы гораздо лучше подходят для сценария частого доступа к элементам.
  6. Вектор занимает гораздо больше памяти в обмен на способность управлять хранилищем и динамически расти, тогда как массивы - это эффективная для памяти структура данных.
  7. Vector является производным от Collection, которая содержит более общий тип данных, тогда как Array является фиксированным и хранит более строгий тип данных.
  8. Вектор хранит элементы в смежной области памяти и обеспечивает прямой доступ к элементу с помощью оператора индекса, тогда как массив Array содержит элементы с их расположением в памяти, которые являются смежными по своей природе.
  9. Vector требует больше времени для доступа к элементам, в то время как непрерывное свойство Array делает их высокоэффективными для доступа к элементам.
  10. Vector использует дженерики, в основном это типобезопасная версия, в то время как массивы с их типобезопасным, высокоэффективным с точки зрения скорости и производительности поддерживают несколько измерений.

C ++ Vector и Сравнительная таблица массивов

Ниже приведено самое лучшее сравнение между C ++ Vector и Array.

Основа сравнения между C ++ Vector и ArrayВектормассив
ТворчествоПоследовательный контейнер для хранения элементовИсходная структура данных, основанная на концепции индекса
ПамятьЗанимать больше памяти, чем массивПамять эффективных
длинаДлина варьируетсяДлина фиксированного размера
использованиеЧастые вставки и удаленияЧастый доступ к элементам
Изменение размераResize Vector носит динамический характерИзменение размеров массивов стоит дорого
СтруктураШаблонный класс, только C ++ конструкцияНепрерывное расположение памяти
индексированиеНеиндексированная структураИндекс на основе самого низкого адреса в качестве первого и самого высокого адреса в качестве последнего
ДоступЭлемент доступа занимает много времени, хотя основывается на позиции элементаЭлемент доступа является постоянной функцией независимо от местоположения элемента.

Вывод - C ++ Vector vs Array

Оба C ++ Vector vs Array являются разными типами, имеют разные возможности и хранят свои данные по-разному. Эти возможности хранения и дизайн структур данных C ++ Vector и Array делают их уникальными по-своему. Массив имеет фиксированный размер и после его выделения нельзя добавлять или удалять элементы из него, также все элементы должны быть одного типа. Таким образом, это типобезопасная и наиболее эффективная линейная структура данных с точки зрения скорости и производительности. Кроме того, массив поддерживает несколько измерений. Vector - это шаблонный класс и только C ++ конструкция. В отличие от Array, они динамичны по своей природе, могут изменять размеры автоматически при частой вставке и удалении элементов. По сути, это шаблонный класс, содержащий указатели в кучу, поэтому, когда всегда вызывается std: vector, всегда вызывается «new». Векторные элементы гарантированно являются смежными, но в то же время они медленнее для доступа из-за подхода на основе указателей. Нужно сначала иметь доступ к указателю, чтобы получить свои практические данные.

C ++ Vector vs Array - это линейная структура данных, которая хорошо подходит для различных сценариев. Если происходит частая вставка и удаление, и в то же время память не является ограничением, тогда Vector является идеальным выбором, тогда как в сценариях, таких как частый доступ к элементам, требующим ограничения памяти, лучше использовать Array. Все зависит от варианта использования и требований. Массив всегда является списком по своей природе, но вектор является шаблоном класса и аналогичен динамическому массиву. Массив допускает как прямой, так и последовательный доступ, а Vector - только последовательный. И это потому, что эти структуры данных хранятся в памяти. Поскольку векторные элементы помещаются в непрерывный блок памяти, их можно легко обойти с помощью итератора.

В C ++ доступно несколько функций, в которых Vector является классом шаблона, и все функции обеспечивают некоторую функциональность вокруг Vector, например, begin (), end (), rbegin (), rend (), cbegin (), cend (), crbegin (), crend ​​(), size (), max_size (), acity (), resize (), empty (), reverse () и shrink_to_fit (). Массив очень сильно связан с аппаратным понятием непрерывной непрерывной памяти, каждый элемент которого идентичен по размеру. Обе идеи C ++ Vector и Array хорошо сочетаются, основываясь на сценариях. В конце концов, все сводится к требованию. Разработчик должен обуздать требования проекта и, таким образом, принять любое решение.

Рекомендуемая статья

Это руководство по основным различиям между C ++ Vector и Array. Здесь мы также обсудим различия между C ++ Vector и Array с инфографикой и таблицей сравнения. Вы также можете взглянуть на следующие статьи C ++ Vector vs Array, чтобы узнать больше -

  1. C ++ ссылка против указателя
  2. C # Array vs List
  3. C против C ++ Производительность
  4. Список Java и список массивов
  5. Требовать против импорта: каковы преимущества
  6. C против C #: каковы особенности