LumiTiger
聚焦聚焦再聚焦, 顺其自然, 水到渠成, 所有的问题都因为自己还不够强大
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
std::vector的源码详解
连续内存 & 三指针模型:理解startfinish是理解一切的基础。sizevscapacitysize是元素个数,capacity是能容纳的元素上限。。push_back的均摊 O(1):得益于倍增扩容策略。中间插入/删除的 O(n):因为需要移动后续所有元素。迭代器失效push_back可能导致所有迭代器失效(扩容时)。insert可能导致所有迭代器失效(扩容时),或至少是插入点之后的失效。erase导致被删除点之后的所有迭代器失效。pop_back只导致指向被删除元素的迭代器失效。原创 2025-10-08 21:03:50 · 48 阅读 · 0 评论 -
std::move 详解
头文件和声明std::move定义在<utility>T&& t是转发引用(universal reference),能绑定任何类型(左值或右值)。返回值:使用移除引用后添加&&,将t转换为右值引用。noexcept:不抛出异常,常量表达式(constexpr),编译时求值。作用:启用移动语义,允许“窃取”资源(如指针转移)而非拷贝。移动后,原对象有效但状态未指定(通常为空)。引入背景:C++11 前,只有拷贝语义,导致资源(如动态内存)重复分配。std::move。原创 2025-08-23 18:29:41 · 170 阅读 · 0 评论 -
std::uncaught_exceptions 详解
头文件和声明该函数定义在返回值:一个整数,表示当前线程中活跃的未捕获异常数量(即已抛出或重新抛出,但尚未进入 catch 子句或离开线程的异常)。noexcept:保证不抛出异常,且是线程安全的(但仅限于当前线程)。引入背景:C++11 之前有(返回 bool,表示是否有至少一个未捕获异常),但它在嵌套异常场景下无法精确区分异常层级。C++17 引入以返回计数,从而解决这个问题。作用它不用于捕获异常,而是用于检测异常状态。原创 2025-08-23 18:19:25 · 142 阅读 · 0 评论 -
std::exchange详解
在需要原子性更新或资源转移的场景(如移动语义、无锁编程)优先使用,避免冗余代码和潜在错误。是 C++14 引入的标准库函数,定义于。,适用于资源管理、状态机更新等场景。原创 2025-08-23 17:51:23 · 87 阅读 · 0 评论 -
istringstream的简化源码详解
istringstream的简化源码详解原创 2025-05-12 18:24:41 · 117 阅读 · 0 评论 -
std::allocator的简化源码详解
std::allocator的简化源码详解原创 2025-04-25 23:45:28 · 163 阅读 · 0 评论 -
手把手实现STL的撰写思路
手把手实现STL的撰写思路原创 2025-04-25 23:27:36 · 119 阅读 · 0 评论 -
C++标准库组件分类
C++标准库组件分类复习原创 2025-04-25 18:42:21 · 698 阅读 · 0 评论 -
std::deque的简化源码详解
std::deque的简化源码详解原创 2025-04-24 16:59:26 · 149 阅读 · 0 评论
分享