Структура данных для одного списка столбцов для хранения адресов, лучший поиск O (1) в C ++ - PullRequest
0 голосов
/ 18 марта 2012

Я новичок в C ++.Мне нужно сохранить список адресов, которые дают очень хорошую производительность с точки зрения поиска и добавления новых записей.

Сначала я хочу посмотреть, присутствует ли адрес в списке, если да, то ненапишите, иначе добавьте новую запись в этот список.

И во время определенной операции посмотрите, присутствует ли адрес в списке или нет.

Есть ли быстрый доступ и динамический ростструктура данных в терминах памяти и пространства в C ++.

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Я бы предложил использовать std::map (обычно реализуемое как некое красно-черное дерево ), которое имеет логарифмическую сложность, поэтому на практике должно быть достаточно.

Если бы у вас была реализация, соответствующая стандарту C ++ 11, вы могли бы рассмотреть std::unordered_map (обычно реализуемую как некоторую хеш-таблицу ).

Если вы нене требуется никаких связанных данных с ключами, но только для обработки их наборов, например std::set или std::unordered_set

И многие библиотеки (Boost, Qt, ...) также реализуют ассоциативные контейнеры.

0 голосов
/ 18 марта 2012

Вы ищете boost :: unordered_map .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...