Не бойтесь std::set, его легко приручить.Эта небольшая статья для тех, кто имеет некоторое представление об ассоциативных контейнерах стандартной библиотеки C++ (std::map, std::set и т.д.), но пока не использовал «множество» (std::set) в повседневной жизни. Этот контейнер позволяет наиболее…
В C++23 появились четыре новых ассоциативных контейнера: std::flat_map, std::flat_multimap, std::flat_set и std::flat_multiset, которые являются полноценной заменой упорядоченных ассоциативных контейнеров std::map, std::multimap, std::set и std::multiset. Они были добавлены в C++23 по двум причинам: расход памяти и производительность. Читать далее
На недавней встрече комитет C++ «прорвало», и в черновую версию C++23 добавили: std::mdspan std::flat_map std::flat_set freestanding std::print("Hello {}", "world") форматированный вывод ranges constexpr для bitset, to_chars/from_chars std::string::substr() && import std; std::start_lifetime_as static operator() [[assume(x > 0)]]; 16- и 128-битные float std::generator и очень много другого Подробности
Привет, Хабр! Еще в C++23 появились «плоские» ассоциативные контейнеры: std::flat_set, std::flat_map и их многоключевые аналоги. Проще говоря, это полные аналоги обычных std::set и std::map, но реализованные иначе – через упорядоченный последовательный контейнер (по умолчанию std::vector). Зачем вообще понадобились эти штуки? Официальная причина – экономия памяти и выигрыш в производительности при чтении данных. Читать далее