В чем разница между массивом и вектором в C ++? Примером различий могут быть библиотеки, символика, способности и т. Д.
массив
Массивы содержат определенное количество элементов определенного типа. Чтобы компилятор мог зарезервировать необходимый объем пространства при компиляции программы, вы должны указать тип и количество элементов, которые будет содержать массив при его определении. Компилятор должен иметь возможность определить это значение при компиляции программы. После определения массива вы используете идентификатор массива вместе с индексом для доступа к определенным элементам массива. [...] массивы имеют нулевой индекс; то есть первый элемент имеет индекс 0. Эта схема индексации указывает на тесную взаимосвязь в C ++ между указателями и массивами и правилами, которые язык определяет для арифметики указателей.
- Карманный справочник C ++
Вектор
Вектор - это последовательность объектов динамического размера, обеспечивающая
operator[]
произвольный доступ в стиле массива . Функция-членpush_back
копирует свои аргументы через конструктор копирования, добавляет эту копию в качестве последнего элемента в векторе и увеличивает ее размер на единицу.pop_back
делает прямо противоположное, удаляя последний элемент. Вставка или удаление элементов с конца вектора требует амортизированного постоянного времени, а вставка или удаление из любого другого места занимает линейное время. Это основы векторов. Есть еще много чего. В большинстве случаев вектор должен быть вашим первым выбором, а не массивом в стиле C. Прежде всего, они имеют динамический размер, что означает, что они могут расти по мере необходимости. Вам не нужно проводить всевозможные исследования, чтобы определить оптимальный статический размер, как в случае массивов C; вектор увеличивается по мере необходимости, и при необходимости его размер можно увеличивать или уменьшать вручную. Во-вторых, векторы предлагают проверку границ с помощьюat
функции-члена (но не с помощьюoperator[]
), чтобы вы могли что-то сделать, если вы ссылаетесь на несуществующий индекс, вместо того, чтобы просто наблюдать за сбоями вашей программы или, что еще хуже, продолжать выполнение с поврежденными данными.- Поваренная книга C ++