В чем разница между векторами и массивами?

Всем привет! Начал изучение С++ и столкнулся с вопросом: в чем разница между векторами и массивами в С++?


Ответы (1 шт):

Автор решения: Swift - Friday Pie

Если отбросить все нестандартные определения и термины, то массив является простейшим составным типом, пришедшим из языка Си. Массив объектов (включая фундаментальные типы) занимает неразрывную область памяти, его элементы являются подобъектами массива, его размер задается в момент создания. Размер массива выраженный в виде числа элементов является частью его типа.

int  arr[6]; // Переменная - массив int-ов размером 6

int* allocate(int size) 
{
    // dyn_arr присваивается значение указателя на массив заданного размера
    int  *dyn_arr = new int[size]; // выделяется динамически при исполнении
    return dyn_arr;  // возвращается указатель на первый элемент
}

Как таковой синтаксис языка Си++ не работает с понятием "вектор". Однако стандарт на язык описывает набор стандартных компонент, к таковым относится std::array и std::vector. Первый является структурой, ведущей себя как массив постоянного размера, за исключением того что она может быть возвращена из функции или передана без развоплощения в указатель на первый элемент. Второй является классом для работы с массивом в динамически выделенной области памяти, позволяющий уменьшать и увеличивать объем выделенной памяти по желанию, что требует перевыделения и копирования содержимого.

→ Ссылка