高效 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 排版
pdf 文件大小:1.06MB