移动语义 (1) 替换 高代价的 copy (2) 支持 创建只允许 move 的类型: std::unique_ptr/std::future/and std::threa...
part4 智能指针 1 裸指针问题 (1) 没指明 指向 单个对象还是数组 (2) 没指明 是否应该销毁 所指内容 (3) delete形式必须对: delete / de...
item8 nullptr 优先于 0 和 NULL 总结: (1) 0: 0 是 int 型, 编译器将 应该出现指针却出现0的位置上的0 勉强转换为 空指针 (void*...
part1 类型推断 item1 模板类型推断: 即 函数模板实参推断 规则非常自然 remember: 模板类型推导中 (1) 引用 传递的实参: 忽略 实参的引用性 (2...
item43: 算法调用优先于手工循环 STL算法内部都是循环, 意味着你的手工循环大多数可以用STL算法来完成 而 用STL算法 更高效、更安全、更清晰/可维护 1 更高效...
part6 遍布STL的 functor, 通常应该可配接(adaptable), 并经 function Adapter 进一步配接 总结: (1)让functor 继承自...
part5 算法 本章2个目标 1 介绍几个鲜为人知但很实用的算法 (1) 忽略大小写的字符串比较 (2) 有效查找容器中最合适的n个对象 (3) 容器中一个区间内元素的统计...
part4 4种迭代器 (1) 关系 (2) 是否可相互转换 (3) 是否可混用 (4) 与 容器及其成员函数 之间的关系 特定形式的insert和erase, 只有1种迭代...
part3 关联容器 与序列容器区别 (1) 自动排序 (2) 比较是按照等价(equivalence)而不是相等(equality) (3) set/map 不允许有重复 ...
part2 vector 和 string 2个最常用的容器 数组的用途是如此广泛, 设计 vector 和 string 的目的是为了代替大多数应用中使用的数组 Note:...
item1 慎重选择容器类型 1 STL容器分类 另一种分类方法: 连续内存/基于节点 的容器 (1) 连续内存容器 元素存放在>=1块(动态分配的)内存中,每块内存中存多个...
揭开使用STL时各 陷阱的 来源 / 解决方案的优劣 接口与实现分离: 对于STL, 不能简单地使用这条规则原因: STL实现的 通用&特殊性 关联容器: 有更多陷阱 6大部...
1个简单的 引用计数智能指针 本代码取自陈硕的 github 仓库 (1) Ctor: 默认RCSP是空 RCSP: 目标对象和RC 指针均为空 => 还没产生 RC, 而不...
本文参考 https://zhuanlan.zhihu.com/p/267896855[https://zhuanlan.zhihu.com/p/267896855] 1 深...
1 erase() clear() 比较 iterator erase(iterator pos) iterator erase(iterator first, iterat...
1 hashtable hash functions Note: 自定义类型, 用户必须写 hashFunc, 否则 hashtable 无法处理 2 hash_set: 模...
1 RB-tree 平衡二叉搜索树 按 Key 自动排序(默认递增排序, std::less<Key> ) 1.1 节点 1.2 迭代器 1.3 数据结构 2 set: 模板...
STL 算法的操作参数可以用函数对象, 也可以用函数指针: (模板)函数实参推断可以推断出操作实参的类型 不用记算法有没有 _if 版本, 代码测一下即可, 若有, 把特定元...
特定的数据结构 往往是为了实现/解决 特定的算法 STL 算法共性: 都作用在 由迭代器 [first, last) 所标示的区间上 mutable: 算法运算过程会 更改 ...