为什么栈内存这么快?
栈内存分配只需移动指针,访问局部数据连续且缓存友好,且每线程独享,避免锁竞争,速度极快。
栈内存分配只需移动指针,访问局部数据连续且缓存友好,且每线程独享,避免锁竞争,速度极快。
堆内存分配涉及系统调用和复杂管理,无序释放导致碎片,增加开销,因此比栈内存慢很多。
迭代器配合 traits 技法,可在编译期提取类型信息,实现泛型算法的类型调度与性能优化。
空间配置器管理内存分配与释放,分一级(大块直接malloc)和二级(小块空闲链表)配置器,提高内存利用率和分配效率。
自定义 INT 类,重载前置和后置自增自减运算符,返回值区分,支持链式调用和原值返回。
C++中小整数类型在运算前会提升为int,若直接移位可能导致符号位错误。应显式转换为uint32_t或更大无符号类型再移位,避免未定义行为。
异常安全是指在发生异常时,程序能够保持容器或数据结构的有效性,避免资源泄漏,并保证容器状态的一致性。常见的异常安全级别有基本保证、强保证和不变性保证。
std::multimap 是 C++ STL 中的关联容器,允许存储重复的键值对。它按键自动排序,并支持通过 equal_range() 查找所有具有相同键的元素。底层使用红黑树,提供 O(logN) 时间复杂度的查找、插入和删除操作。
std::multiset 是 C++ STL 中的关联容器,允许存储重复元素,元素自动按顺序排列(默认升序)。底层使用红黑树实现,支持 O(logN) 时间复杂度的插入、删除和查找操作。
std::map 是 C++ STL 中的关联容器,存储键值对,键唯一且按顺序排列。底层使用红黑树实现,提供 O(logN) 时间复杂度的插入、删除和查找操作。常用于需要有序数据的场景。