Эффективный поиск связанного списка объектов для строки

0

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

Мне может потребоваться найти определенную строку, и при этом получить объект на основе этой строки.

Начальный заголовок списка - единственный вход, который у меня есть для списка.

Хотя количество объектов, которые у меня есть, ограничено 3000, и это не так много, я все еще задавался вопросом, был ли эффективный способ сделать это, вместо того, чтобы искать объекты один за другим для соответствующей строки.

Объекты в списке не сортируются никоим образом, и я не могу ожидать, что они будут отсортированы, а точка входа в связанный список - единственный вход, который у меня есть.

Итак, может ли кто-нибудь сказать мне, есть ли эффективный способ (возможно, алгоритм поиска), чтобы достичь этого?

Отдельно для такого поиска, если требуется, какая была бы такая структура данных, если предположить, что этот поиск является наиболее важной для данных функцией объекта?

Благодаря..

Теги:
linked-list
search

3 ответа

2

Используйте std::map<std::string, YourObjectType>. Вы все равно можете перебирать все объекты. Но теперь они отсортированы по строкам.

Если у вас может быть несколько объектов с одной и той же строкой, вместо этого используйте multimap.

  • 0
    Возможно, мне сложно изменить структуру. Но я буду исследовать эту возможность. Спасибо за совет.
0

Если вы не можете переключиться на какую-либо другую структуру/контейнер, тогда нет способа сделать это лучше, чем линейный по размеру списка.

0

Имея 3000, вы хотели бы использовать unordered map вместо связанного списка, что даст вам среднее время поиска, вставки и удаления O (1).

Ещё вопросы

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