Новый стандарт C++, C++23, впервые с C++11 расширил всем привычную линейку контейнеров: помимо знакомых array
, vector
, (unordered_)set
, (unordered_)map
и прочим в нее теперь входят непонятные flat_set
, flat_map
, flat_multiset
и flat_multimap
. Ответим на вопросы, что это за контейнеры, когда они могут быть полезны, сравним дизайн стандартизированных «плоских» контейнеров с дизайном плоских контейнеров из Boost и ETL и, конечно, произведём замеры и сравним производительность flat_
и не flat_
контейнеров.
Плоские контейнеры в C++23