Комментарии 12
Кстати, по поводу std::find, std::count в msvc 2022 с 17.3 версии появится SSE2 / AVX2 оптимизации для целых типов.
Подробнобно на реализацию можно взглянуть в этом PR SSE2 & AVX2 std::find & std::count
По тому же принципу сейчас делаются оптимизации под arm используя NEON инструкции - Implement NEON vector algorithms
это полностью соответствует изначальному замыслу авторов — предоставить набор только базовых примитивов
Ага. Например, эллиптические интегралы: https://en.cppreference.com/w/cpp/numeric/special_functions/ellint_2
Признаюсь честно - не использовал такое. Но это было сделано не так давно и на просторах можно найти, что эллиптические (неполные) интегралы 1-го и 2-го рода широко используются при решении множества инженерных задач гидро- и аэродинамики, строительной физики, теории фильтрации, механики сплошной среды, теплодинамики, радиоэлектроники, цифровой обработки сигналов и др. Так что кажется что это именно базовый примитив)
В комитете есть люди, плотно связанные с математикой. Если не путаю, сам Страуструп тоже. Думаю, что они оказывают заметное влияние на математическую часть STL. И да, как написано выше - это не такая уж узко-специальная область.
А есть где-нибудь популярное толкование внутренних именований в STL? Оно не похоже на популярные принципы именования, что свидетельствует о веских причинах самобытности.
Про умные указатели и потоки тема особенностей реализации в разных компиляторах не раскрыта. Очень хотелось бы почитать именно про эти темы.
Показалось, что про это уже писали очень много, да и по коду реализация вроде не особо отличается, каких-то прям ярких особенностей пока не заметил. Но за предложение спасибо, видимо эта тема до сих пор актуальна и интересна, постараюсь учесть на будущее. Возможно, напишу про это отдельно, поскольку тема кажется довольно обширной.
Зачем нужен трюк с указателем на один элемент раньше, я не понял — прошу расшифровать.
vector это диверсия больше из-за того, что там особая обработка. Я нарвался на случай, когда при смене MySQL 5.7->8.0 изменение my_bool привело к невозможности взять адрес элемента вектора. Пришлось хранить свой, по сути, char.
Особенности реализации STL в Clang, GCC и Microsoft С++