Рекомендуемая структура данных в Julia для эффективного добавления
Какова идеальная структура данных, подобная списку, в Джулии?
Я хочу индексируемую, растущую коллекцию с операцией добавления времени.
Стандартная структура данных выглядит Array
с помощью операции push!
. Это постоянное время?
Ответы
Ответ 1
Как сказал Харлан, push!
является амортизированным постоянным временем. См. Описание подобной структуры данных С++ для аргументов, почему: Амортизированный анализ вставки std::vector
Если вам нужна структура данных с постоянным постоянным временем, вы, вероятно, захотите реализовать связанный список. Я видел множество примеров реализации, но ничего не готового к производству.
Ответ 2
Повторно называть push!
не постоянное время, но довольно быстро. Он выполняет случайное перераспределение буфера. См. Источник C для добавления в массив: https://github.com/JuliaLang/julia/blob/master/src/array.c#L564