Удаление элемента из массива

0

Я хочу удалить элемент из массива. У меня есть массив ints от 1 до 9. Мой алгоритм ищет строку, если число в строке соответствует числу в массиве, оно удаляет номер в массиве. Каков наиболее эффективный алгоритм для этого? Я думал о связанном списке, потому что я мог просто сократить список, но позже он может запутаться, и он может быть не так эффективен, как массив.

  • 0
    Вы запрашиваете наиболее эффективный алгоритм или контейнер? Это две разные вещи.
  • 3
    Используйте std::vector если у вас нет причин не делать этого. В большинстве случаев производительность std::vector лучше, чем производительность std::list
Показать ещё 2 комментария
Теги:

2 ответа

1

Наиболее эффективным методом является использование пустых/полных флагов контейнера для каждого слота в массиве. В противном случае каждый элемент должен быть перемещен вверх по слоту.

0

Здесь есть простой способ для многих переменных, чтобы дать хороший ответ.

Из вашего описания у вас есть 2 структуры данных, каждая из которых имеет список значений, и вы хотите удалить все значения из первой структуры, которые находятся во второй структуре. Какая структура является второй структурой? у вас есть контроль над этим? Это что-то, что можно легко и быстро найти как набор или unordered_set или это что-то, что нужно повторить, чтобы найти значение как связанный список? Удаляет ли структура данных, которую вы удаляете, в порядке возрастания?

В идеале, один из этих контейнеров придется перебирать от начала до конца, а другой - то, что можно быстро найти. Вы хотите, чтобы контейнер, который вы собираетесь удалить, быстро удалил. Если массив необходимо сохранить в порядке, то удаление из массива - это процесс, требующий много времени, который требует либо A: перемещение каждого элемента из точки удаления и обратно, а затем отслеживание фактической длины массива или B: копирование содержимое массива в новый массив, в котором отсутствует этот элемент. На самом деле, здесь недостаточно информации, чтобы дать вам хороший ответ о том, какие алгоритмы или контейнеры лучше всего подходят для вашей задачи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню