Несколько дополнительных очков за использование vector
здесь.
В отличие от ArrayList
и Array
в Java, вам не нужно делать ничего особенного для обработки vector
как массива - базовое хранилище в C ++ гарантированно является непрерывным и эффективно индексируемым.
В отличие от ArrayList
, vector
может эффективно хранить примитивные типы без инкапсуляции как полноценный объект.
При удалении предметов из vector
, имейте в виду, что предметы над удаленным предметом должны быть перемещены вниз, чтобы сохранить непрерывное хранение. Это может стать дорогим для больших контейнеров.
Убедитесь, что если вы храните сложные объекты в vector
, их конструктор копирования и операторы назначения эффективны. Под прикрытием C ++ STL использует их во время хранения контейнеров.
Рекомендации по reserve()
открытию хранилища (т. Е. Во время создания вектора или времени инициализации) для минимизации перераспределения памяти при более позднем переносе расширения с Java на C ++.