Я ищу структуру данных, в которой я могу эффективно удалять элементы, а также поддерживать произвольный доступ.
Мне также нужна эффективная вставка, но поскольку порядок элементов не важен, я подумал, что могу предварительно выделить память для максимального количества элементов, которые она может хранить, а затем всегда помещать новый элемент в конец, чтобы не было перераспределения или перемещения других элементов. является необходимым.
Насколько мне известно, связанный список идеально подходит для удаления, но доступ к его элементам может занять O(n) времени. С другой стороны, простой массив (например, vector
в C++) имеет свойство произвольного доступа, но удаление элемента из такой структуры имеет сложность O(n).
На самом деле требование произвольного доступа сильнее, чем то, что мне действительно нужно. Мне нужно только иметь возможность случайным образом равномерно выбрать элемент структуры. Очевидно, что свойство эффективного доступа подразумевает эффективность операции, которая мне нужна, но я не уверен, что эти два свойства эквивалентны.
Заранее спасибо!