深入了解Modern C++
文章平均质量分 93
_fibonaccii
C++ & Linux 后端开发人员
展开
-
源码剖析STL内存分配器 std::allocator,让你能硬刚面试官
本期主要讲解C++ STL中的内存分配器std::allocator及其特性萃取器__gnu_cxx::__alloc_traits。为防止混淆,规定如下:allocator:泛指内存分配器,仅仅是一个术语。std::allocator:是STL实现的内存分配器类std::allocator。更多硬核知识,欢迎关注:__gnu_cxx::new_allocatorC++的默认的内存分配器std::allocator,继承至__gnu_cxx::new_allocator。而 __gnu原创 2021-03-03 10:14:49 · 1921 阅读 · 1 评论 -
一道面试题:你了解哪些编译器优化行为?知道Copy elision 、RVO吗?
C++11以后,g++ 编译器默认开启复制省略(copy elision)选项,可以在以值语义传递对象时避免触发复制、移动构造函数。copy elision 主要发生在两个场景:函数返回的是值语义时函数参数是值语义时返回值优化返回值优化RVO(Return Value Optimization,RVO),即避免返回过程触发复制 / 移动构造函数。根据返回的值是否是匿名对象,可以分为两类:具名返回值优化 NRVO (Named Return Value Optimization,NRVO)匿原创 2021-02-28 08:53:51 · 448 阅读 · 0 评论 -
深入剖析 std::unordered_map 的实现原理之 Hash冲突、退化
本次来讲解下c++中 std::unordered_map的设计原理。std::unordered_map里面has-a哈希表,它提供的的各个方法基本都是由hashtable封装实现,因此在下文使用hashtable来描述std::unordered_map。 // gnu 实现 template<typename _Key, typename _Tp, typename _Hash = hash<_Key>,原创 2021-02-27 21:33:58 · 8279 阅读 · 4 评论