std::vector: динамический массив, размер которого может изменяться во время выполнения. Память выделяется в куче.std::array: фиксированный по размеру массив, размер которого определяется на этапе компиляции. Память выделяется в стеке (для локальных переменных) или в статической области памяти (для глобальных/статических переменных).Основные отличия:
| Характеристика | std::vector | std::array |
|---|---|---|
| Размер | Динамический | Фиксированный |
| Выделение памяти | Куча | Стек/Статическая область |
| Изменение размера | Возможно | Невозможно |
| Производительность | Могут быть накладные расходы при изменении размера | Более предсказуемая, нет накладных расходов на изменение размера |
| Использование | Когда размер заранее неизвестен или может меняться | Когда размер известен на этапе компиляции и фиксирован |
| Инициализация | Можно оставить неинициализированным или инициализировать | Всегда инициализируется (нулями для POD-типов, конструктором по умолчанию для других) |
Пример std::vector:
cpp
Пример std::array:
cpp