Разница между вектором 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 ++:
- Vector - это последовательные контейнеры, а Array - структура данных более низкого уровня.
- Vector поставляется в виде шаблонного класса в C ++ с родителем в качестве класса Collection, тогда как Array является структурой данных более низкого уровня со своими собственными специфическими свойствами.
- Вектор не основан на индексе и имеет функции и конструкторы, в то время как массивы являются структурами данных на основе индекса, причем наименьший адрес предоставляется первому элементу, а наибольший адрес предоставляется последнему элементу в массиве.
- Вектор является динамическим по своей природе, то есть его размер автоматически увеличивается при увеличении количества вставляемых элементов, тогда как массивы имеют фиксированную структуру размера, после инициализации их невозможно сбросить.
- Вектор лучше подходит для частой вставки и удаления, тогда как массивы гораздо лучше подходят для сценария частого доступа к элементам.
- Вектор занимает гораздо больше памяти в обмен на способность управлять хранилищем и динамически расти, тогда как массивы - это эффективная для памяти структура данных.
- Vector является производным от Collection, которая содержит более общий тип данных, тогда как Array является фиксированным и хранит более строгий тип данных.
- Вектор хранит элементы в смежной области памяти и обеспечивает прямой доступ к элементу с помощью оператора индекса, тогда как массив Array содержит элементы с их расположением в памяти, которые являются смежными по своей природе.
- Vector требует больше времени для доступа к элементам, в то время как непрерывное свойство Array делает их высокоэффективными для доступа к элементам.
- 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, чтобы узнать больше -
- C ++ ссылка против указателя
- C # Array vs List
- C против C ++ Производительность
- Список Java и список массивов
- Требовать против импорта: каковы преимущества
- C против C #: каковы особенности