Векторы являются общим решением. Однако вы должны посмотреть на распределение памяти, прежде чем начать использовать код библиотек, таких как векторы - например, C ++ new, calloc, malloc, локальная память потоков и т. Д. Каждый контейнер STL имеет свои собственные алгоритмические сложности, и их изучение поможет вам в выборе правильный
Обсуждение:
Если вы хотите, чтобы что-то росло, и у вас нет места для этого ... ну, вы должны выполнить realloc () или поставить алгоритмически. Получите больший буфер памяти и скопируйте старый буфер в него с правильными смещениями индекса . Это то, что делает вектор за сценой; Конечно, вектор просто делает это очень хорошо (это зависит от реализации), растя с помощью линейной функции (2x). растущий таким образом означает, что у него больше памяти, чем нужно, что означает, что данные, добавленные в вектор в будущем, не вызовут немедленного перераспределения.
Однако я должен добавить, что это очень неэффективно, вы почти всегда можете избежать затрат на копирование. Основное использование вектора - для смежных областей памяти, вы почти всегда можете улучшить вектор, используя связанные структуры данных, возможно, в двоичном дереве для поиска по ключу: D