高效 STL 使用技巧
- 谨慎选择容器
- 留意“容器无关代码”的局限性
- 简化容器内对象的拷贝操作
- 以 empty 代替 size() == 0
- 优先使用区间函数,而非单一元素函数
- 注意 C++ 中易混淆的解析
- 析构容器时,释放分配的指针
- 避免建立 auto_ptr 容器
- 审慎选择移除选项
- 注意分配器的约定和限制
- 正确理解自定义分配器的用法
- 合理预估 STL 容器的线程安全性
- 广泛使用 vector 和 string
- 使用 reserve 避免频繁重新分配
- 注意 string 实现的多样性
- 适时使用“交换技巧”调整冗余容量
- 慎用 vector 关联容器
- 区分相等和等价
- 为指针关联容器指定比较类型
- 保证比较函数对相等值返回 false
- 避免对 set 和 multiset 的键进行原地修改
- 考虑使用有序 vector 替换关联容器
- 在效率优先时,权衡 map::operator[] 和 map::insert 的选择
- 熟悉非标准散列容器迭代器
- 优先使用 iterator,而非 const_iterator、reverse_iterator 和 const_reverse_iterator
- 利用 distance 和 advance 将 const_iterator 转换为 iterator
- 通过 reverse_iterator 的 base 获取 iterator
- 使用 istreambuf_iterator 单个字符读取输入
- 确保目标区间大小充足
- 了解排序选项
- 删除元素时,使用类似 remove 的算法搭配 erase
- 谨慎在指针容器上使用类似 remove 的算法
- 注意需要有序区间的算法
- 通过 mismatch 或 lexicographical 比较实现大小写无关的字符串比较
- 正确理解 copy_if 的实现
- 使用 accumulate 或 for_each 统计区间
- 避免 A 标签,使用 markdown 排版
1.06MB
文件大小:
评论区