Разница в производительности между ними очень сильно зависит от реализации - если вы сравните плохо реализованный std :: vector с оптимальной реализацией массива, массив выиграет, но перевернет его, и вектор победит ...
Пока вы сравниваете яблоки с яблоками (либо массив, и вектор имеют фиксированное число элементов, либо оба динамически изменяются в размерах), я думаю, что разница в производительности незначительна, если вы следуете практике кодирования STL , Не забывайте, что использование стандартных контейнеров C ++ также позволяет вам использовать предварительно свернутые алгоритмы, которые являются частью стандартной библиотеки C ++, и большинство из них, вероятно, будут более эффективными, чем обычная реализация того же алгоритма, который вы создали сами .
Тем не менее, ИМХО, вектор выигрывает в сценарии отладки с отладочным STL, поскольку большинство реализаций STL с надлежащим режимом отладки могут по крайней мере выделить / скрыть типичные ошибки, допущенные людьми при работе со стандартными контейнерами.
О, и не забывайте, что массив и вектор совместно используют одну и ту же структуру памяти, поэтому вы можете использовать векторы для передачи данных в устаревший код C или C ++, который ожидает базовые массивы. Имейте в виду, что большинство ставок в этом сценарии отменены, и вы снова имеете дело с необработанной памятью.