Что такое C ++ версия Java ArrayList - PullRequest
64 голосов
/ 19 октября 2010

Просто возвращаюсь к использованию C ++ и пытаюсь конвертировать простую Java-программу, которую я недавно написал.

Какой предпочтительный эквивалент Java ArrayList в C ++?

Ответы [ 2 ]

76 голосов
/ 19 октября 2010

Используйте std::vector класс из стандартной библиотеки.

49 голосов
/ 19 октября 2010

Несколько дополнительных очков за использование vector здесь.

В отличие от ArrayList и Array в Java, вам не нужно делать ничего особенного для обработки vector как массива - базовое хранилище в C ++ гарантированно является непрерывным и эффективно индексируемым.

В отличие от ArrayList, vector может эффективно хранить примитивные типы без инкапсуляции как полноценный объект.

При удалении предметов из vector, имейте в виду, что предметы над удаленным предметом должны быть перемещены вниз, чтобы сохранить непрерывное хранение. Это может стать дорогим для больших контейнеров.

Убедитесь, что если вы храните сложные объекты в vector, их конструктор копирования и операторы назначения эффективны. Под прикрытием C ++ STL использует их во время хранения контейнеров.

Рекомендации по reserve() открытию хранилища (т. Е. Во время создания вектора или времени инициализации) для минимизации перераспределения памяти при более позднем переносе расширения с Java на C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...