Friday, November 23, 2012

O Boost Multi-index Containers

Дисклаймер: Все права на данный материал принадлежат Хабрахабр / Лучшие за сутки / Посты и могут быть найдены по ссылкам ниже.

Хочу представить или даже напомнить о таком замечательном модуле Boost как multi_index_container. Все мы знаем и интенсивно пользуем стандартные STL классы для хранения и доступа к данным как списки, векторы, мапы?, хеши. Про них сказано уже немало и исследованы все особенности их применений.

Всё усложняется когда возникает необходимость в классе для хранения и доступа к объектам по более чем одному ключу или их комбинациям. Обычно начинают с создания двух мапов или хешей, потом при увеличении их числа всё становится сложнее и возникают усложнённые участки кода для синхронизации этих хешей, вставок, удаления и переименований плюс становится довольно сложно понять стоимость той или иной операции. Ну и конечно создание таких велосипедов ведёт к большому количеству багов, необходимости оптимизаций и так далее.

Конечно всё уже придуманно до нас и в библиотеке Boost уже есть модуль для решения данных проблем — boost::multi_index. Огромное преимущество — скорость, multi_index очень быстрый. Однако документация этого модуля скажем сложна для понимания и новички стараются обходить этот модуль стороной. И конечно отдельно можно сказать о сообщениях компилятора при ошибках при работе с multi_index_container — разобрать длинные сообщение о шаблонах не каждому под силу.

Постараемся ликвидировать этот пробел и показать простые примеры для горячего старта и использования этого мощного инструмента. Буду пользовать немного вместе с Qt в примерах. (Как раз в Qt с их собственной системой шаблонов мне часто не хватает примитива сравнимого с multi_index)
Читать дальше →

АВТОР: Хабрахабр / Лучшие за сутки / Посты http://habrahabr.ru/post/160009/




ifttt
Put the internet to work for you. via Personal Recipe 1574425

No comments:

Post a Comment

Search This Blog