Блог*
HashMap<String, Thing> можно индексировать значениями типа &str.
BTW это было в Rust std с самой первой версии, то есть с середины 2015 года. В #cpp подобная вещь называется heterogeneous lookup, и хотя она реализована для контейнеров в std, она opt-in. Для упорядоченных контейнеров нужно явно дописывать
std::less<> в шаблонные параметры типа, а для неупорядоченных вообще надо самостоятельно писать хешер и явно дописывать is_transparent в определении. Вдобавок heterogeneous lookup на упорядоченных контейнерах был с C++14, а вот на неупорядоченных его не было до выхода C++20 — то есть на четыре года позже, чем в Rust.👍7
#prog #cpp #article
On push_back_unchecked: Performance with FromIterator and Collect
TL;DR: в другом посте предлагали добавить в вектор операцию
On push_back_unchecked: Performance with FromIterator and Collect
TL;DR: в другом посте предлагали добавить в вектор операцию
push_back_unchecked, которая не проверяет ёмкость перед записью (и, соответственно, на полном векторе даёт UB). Замеры показали, что это даёт ускорение по сравнению с push_back в цикле. Автор же этой статьи сделал API FromIterator (взятый из std Rust) для своей библиотеки контейнеров и показал, что для таких юзкейсов можно добиться сопоставимого ускорения по сравнению с std::vector без возможности вляпаться в UB.An Update on Writing Memory Safety Bugs
On push_back_unchecked: Performance with FromIterator and Collect
Encapsulating Undefined Behaviour in the C++ Standard Library for Performance with Safety
🔥8❤1