Ассоциативные контейнеры в C++ работают с конкретным типом ключа. Для поиска в них по ключу подобного типа (std::string, std::string_view, const char*) мы можем нести существенные потери в производительности. В этой статье я расскажу как этого избежать с помощью относительно недавно добавленной возможности гетерогенного поиска.
Рубрика «C++20» - 2
Гетерогенный поиск в ассоциативных контейнерах на C++
2020-10-15 в 21:15, admin, рубрики: c++, C++14, c++17, C++20Введение
Данная статья является переводом главы из книги Райнера Гримма Concurrency with Modern C++, которая является более доработанной и обширной версией статьи на его сайте. Так как весь перевод не умещается в рамках данной статьи, в зависимости от реакции на публикацию, выложу оставшуюся часть.
Корутины
Корутины это функции которые могут приостановить или возобновить свое выполнение при этом сохраняя свое состояние. Эволючия функций в C++ сделала шаг вперед. Корутины с наибольшей вероятностью войдут вошли в C++20.
Идуя корутин, представленная как новая в C++20, довольно стара. Понятие корутины было предложено Мелвином Конвеем. Он использовал данное понятие в публикации о разработке компиляторов от 1963. Дональд Кнут называл процедуры частным случаем корутин. Иногда должно пройти время чтобы та или иная идея была принята.
В этой статье мы подробно разберем понятие сопрограмм (coroutines), их классификацию, детально рассмотрим реализацию, допущения и компромиссы, предлагаемые новым стандартом C++20.
День смерти стандартной библиотеки
2020-02-27 в 11:34, admin, рубрики: abi, c++, C++20, WG21, ПрограммированиеНа днях в Праге комитет по стандартизации С++ провел ряд опросов по вопросу изменения ABI, и в конечном счете было решено ничего в нем не менять. Аплодисментов в зале слышно не было.
Я думаю, мы не осознавали полностью те последствия, которое повлечет за собой данное решение, и я не верю, что оно в принципе может положительно сказаться на развитии языка.
C++20 утверждён! Чего ждать и к чему готовиться разработчикам в C++23
2020-02-19 в 6:56, admin, рубрики: abi, abi c++, c++, c++ библиотеки, C++20, c++23, concepts, contracts, coroutine, coroutines, IT-стандарты, malloc, modules, ranges, Блог компании Яндекс, Компиляторы, Программирование, стандарт, стандартизацияНа днях в Праге прошла встреча международного комитета по стандартизации C++. И-и-и-и…
C++20 готов! Осталось поставить штампик от ISO, но это чисто формальный шаг, с которым не должно быть проблем.
Поздравляю всех с этим замечательным событием! Concepts, Coroutines, Modules, Ranges, std::format, constexpr new и constexpr алгоритмы+vector+string, datetime, jthread, span, bit_cast и многие другие мелкие и большие нововведения.
Что успели добавить и поправить в последний момент, что предложили разломать и что все хотят видеть в C++23 — обо всём этом под катом.
Читать полностью »
Название имплементации и название результата
2020-01-21 в 13:53, admin, рубрики: c++, C++20, в информатике две сложных проблемы, Программирование
Я хотел написать этот пост ещё в июле, но никак не мог, о ирония, решить, как его назвать. Удачные термины пришли мне в голову только после доклада Кейт Грегори на CppCon, и теперь я наконец могу рассказать вам, как не надо называть функции.
Бывают, конечно, названия, которые вообще не несут информации, типа int f(int x)
. Ими пользоваться тоже не надо, но речь не о них. Порой бывает, что вроде бы и информации в названии полно, но пользы от неё абсолютно никакой.
Баги C++20. Итоги встречи в городе Белфаст
2019-11-13 в 8:16, admin, рубрики: c++, C++20, constexpr, executors, IT-стандарты, numbers, undefined behavior, Алгоритмы, баги, Блог компании Яндекс, Программирование, С++На днях прошла встреча комитета по стандартизации языка программирования C++ в городе Белфасте. От представителей стран в комитет прилетело около 400 замечаний к C++20, с половиной из них успели расправиться.
Под катом вас ждут результаты обсуждений замечаний России (да-да, ВАШИХ замечаний к C++20), некоторые замечания других стран, ну и подходящие новинки C++23 (Executors!).
Использование нативных корутин в Java
2019-11-04 в 8:01, admin, рубрики: c++, C++20, coroutines, java, kotlinМногие современные языки поддерживают работу с корутинами на уровне языка. Java в данный момент не поддерживает корутины, но есть надежды что в будущем все может измениться.
Читать полностью »
Зачем нужны ranges из C++20 в простой числодробилке?
2019-10-30 в 13:50, admin, рубрики: c++, C++20, haskell in real world, ranges, Программирование, функциональное программированиеВ последнее время интервалы (ranges), которые должны войти в стандарт C++20, довольно много обсуждают, в том числе и на Хабре (пример, где много примеров). Критики интервалов хватает, поговаривают, что
- они слишком абстрактны и нужны только для очень абстрактного кода
- читаемость кода с ними только ухудшается
- интервалы замедляют код
Давайте посмотрим совершенно рабоче-крестьянскую практическую задачку, для того, чтобы понять, справедлива ли эта критика и правда ли, что Эрик Ниблер был укушен Бартошем Милевски и пишет range-v3 только при полной луне.
Будем интегрировать методом трапеций вот такую функцию: $inline$f(t) = 3 t^2 sin t^3$inline$, в пределах от нуля до $inline$tau$inline$. Если $inline$tau^3 / pi$inline$ равняется нечётному числу, то интеграл равен 2.