Показаны сообщения с ярлыком set. Показать все сообщения
Показаны сообщения с ярлыком set. Показать все сообщения

Почему не следует использовать std::set (и что стоит использовать вместо)

Этот пост является переводом статьи Мэтта Остерна: Why you shouldn't use set (and what you should use instead).
Все, что находится в стандартной библиотеке С++, находится там по какой-то причине, но это не всегда очевидно, по какой именно. Стандарт - это не руководство, в нем не проводится разделения между базовыми компонентами, которые используются постоянно, и теми компонентами, которые были добавлены в стандарт для редких и специфичных случаев.
Один из примеров - это ассоциативный контейнер std::set (и родственные ему map, multiset, multimap). Иногда использование set действительно имеет смысл, но не так часто, как вы могли бы подумать. Стандартная библиотека предоставляет и другие инструменты, позволяющие хранить данные и совершать выборку данных, и часто можно достичь тех же целей, что достигаются при использовании set, используя при этом более простые, более легковесные и более быстрые структуры данных.