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