|
1 | 1 | # Effective STL 阅读笔记
|
2 | 2 |
|
3 |
| -目录 |
| 3 | +## 目录 |
| 4 | + |
4 | 5 | - [第 1 条:慎重选择容器类型](#第-1-条慎重选择容器类型)
|
5 | 6 | - [第 2 条:不要试图编写独立于容器类型的代码](#第-2-条不要试图编写独立于容器类型的代码)
|
6 | 7 | - [第 3 条:确保容器中的对象拷贝正确而高效](#第-3-条确保容器中的对象拷贝正确而高效)
|
7 | 8 | - [第 4 条:调用 empty 而不是检查 size() 是否为 0](#第-4-条调用-empty-而不是检查-size-是否为-0)
|
| 9 | +- [第 5 条:区间成员函数优先于与之对应的单元素成员函数](#第-5-条区间成员函数优先于与之对应的单元素成员函数) |
| 10 | +- [第 6 条:当心 C++ 编译器最烦人的分析机制](#第-6-条当心-c-编译器最烦人的分析机制) |
| 11 | +- [第 7 条:如果容器中包含了通过 new 操作创建的指针,切记在容器对象析构前将指针 delete 掉](#第-7-条如果容器中包含了通过-new-操作创建的指针切记在容器对象析构前将指针-delete-掉) |
| 12 | +- [第 8 条:切勿创建包含 auto_ptr 的容器对象](#第-8-条切勿创建包含-auto_ptr-的容器对象) |
| 13 | +- [第 9 条:慎重选择删除元素的方法](#第-9-条慎重选择删除元素的方法) |
| 14 | +- [第 10 条:了解分配子(allocator)的约定和限制](#第-10-条了解分配子allocator的约定和限制) |
| 15 | +- [第 11 条:理解并自定义分配子的合理用法](#第-11-条理解并自定义分配子的合理用法) |
| 16 | +- [第 12 条:切勿对 STL 容器的线程安全性有不切实际的依赖](#第-12-条切勿对-stl-容器的线程安全性有不切实际的依赖) |
| 17 | +- [第 13 条:vector和string优先于动态分配的数组](#第-13-条vector和string优先于动态分配的数组) |
| 18 | +- [第 14 条:使用 reserve 来避免不必要的重新分配](#第-14-条使用-reserve-来避免不必要的重新分配) |
| 19 | +- [第 15 条:注意 string 实现的多样性](#第-15-条注意-string-实现的多样性) |
| 20 | +- [第 16 条:了解如何把 vector 和 string 数据传给旧的 API](#第-16-条了解如何把-vector-和-string-数据传给旧的-api) |
| 21 | +- [第 17 条:使用”swap技巧”除去多余的容量](#第-17-条使用swap技巧除去多余的容量) |
| 22 | +- [第 18 条: 避免使用 vector<bool>](#第-18-条-避免使用-vector--bool-类型) |
| 23 | +- [第 19 条:理解相等(equality)和等价(equivalence)的区别](#第-19-条理解相等equality和等价equivalence的区别) |
| 24 | +- [第 20 条:为包含指针的关联容器指定比较类型](#第-20-条为包含指针的关联容器指定比较类型) |
| 25 | +- [第 21 条:总是让比较函数在等值情况下返回 false](#第-21-条总是让比较函数在等值情况下返回-false) |
| 26 | +- [第 22 条:切勿直接修改 set 或 multiset 中的键](#第-22-条切勿直接修改-set-或-multiset-中的键) |
| 27 | +- [第 23 条:考虑用排序的vector替代关联容器](#第-23-条考虑用排序的vector替代关联容器) |
| 28 | +- [第 24 条:当效率至关重要的时候,请在 map::operator[] 和 map::insert 之间作慎重选择](#第-24-条当效率至关重要的时候请在-mapoperator-和-mapinsert-之间作慎重选择) |
| 29 | +- [第 25 条:熟悉非标准的散列容器](#第-25-条熟悉非标准的散列容器) |
| 30 | +- [第 26 条:iterator 优先于 const_iterator、reverse_iterator 以及 const_reverse_iterator](#第-26-条iterator-优先于-const_iteratorreverse_iterator-以及-const_reverse_iterator) |
| 31 | +- [第 27 条: 使用 distance 和 advance 将容器的 const_iterator 转换成 iterator](#第-27-条-使用-distance-和-advance-将容器的-const_iterator-转换成-iterator) |
| 32 | +- [第 28 条:正确理解由 reverse_iterator 的 base() 成员函数所产生的 iterator 的用法](#第-28-条正确理解由-reverse_iterator-的-base-成员函数所产生的-iterator-的用法) |
| 33 | +- [第 29 条:对于逐个字符的输入请考虑使用 istreambuf_iterator](#第-29-条对于逐个字符的输入请考虑使用-istreambuf_iterator) |
| 34 | +- [第 30 条:确保目标区间足够大](#第-30-条确保目标区间足够大) |
| 35 | +- [第 31 条:了解各种与排序有关的选择](#第-31-条了解各种与排序有关的选择) |
| 36 | +- [第 32 条:如果确实需要删除元素,则需要在 remove 这一类算法之后调用 erase](#第-32-条如果确实需要删除元素则需要在-remove-这一类算法之后调用-erase) |
| 37 | +- [第 33 条:对包含指针的容器使用 remove 这一类算法时要特别小心](#第-33-条对包含指针的容器使用-remove-这一类算法时要特别小心) |
| 38 | +- [第 34 条:了解哪些算法要求使用排序的区间作为参数](#第-34-条了解哪些算法要求使用排序的区间作为参数) |
| 39 | +- [第 35 条:通过 mismatch 或 lexicographical_compare 实现简单的忽略大小写的字符串比较](#第-35-条通过-mismatch-或-lexicographical_compare-实现简单的忽略大小写的字符串比较) |
| 40 | +- [第 36 条: 理解copy_if算法的正确实现](#第-36-条-理解copy_if算法的正确实现) |
| 41 | +- [第 37 条: 使用accumulate或者for_each进行区间统计](#第-37-条-使用accumulate或者for_each进行区间统计) |
| 42 | +- [第 38 条: 遵循按值传递的原则来设计函数子类](#第-38-条-遵循按值传递的原则来设计函数子类)\ |
| 43 | +- [第 39 条: 确保判别式是”纯函数”](#第-39-条-确保判别式是纯函数) |
| 44 | +- [第 40 条: 若一个类是函数子,则应使它可配接](#第-40-条-若一个类是函数子则应使它可配接) |
| 45 | +- [第 41 条: 理解ptr_fun、men_fun和mem_fun_ref的来由](#第-41-条-理解ptr_funmen_fun和mem_fun_ref的来由) |
| 46 | +- [第 42 条: 确保less与operator<具有相同的语义](#第-42-条-确保less与operator具有相同的语义) |
| 47 | +- [第 43 条: 算法调用优先于手写的循环](#第-43-条-算法调用优先于手写的循环) |
| 48 | +- [第 44 条: 容器的成员函数优先于同名的算法](#第-44-条-容器的成员函数优先于同名的算法) |
| 49 | +- [第 45 条: 正确区分count、find、binary_search、lower_bound、upper_bound和equal_range](#第-45-条-正确区分countfindbinary_searchlower_boundupper_bound和equal_range) |
| 50 | +- [第 46 条: 考虑使用函数对象而不是函数作为STL算法的参数](#第-46-条-考虑使用函数对象而不是函数作为stl算法的参数) |
| 51 | +- [第 47 条: 避免产生”直写型”(write-only)的代码](#第-47-条-避免产生直写型write-only的代码) |
| 52 | +- [第 48 条: 总是包含(#include)正确的头文件](#第-48-条-总是包含include正确的头文件) |
| 53 | +- [第 49 条: 学会分析与STL相关的编译器诊断信息](#第-49-条-学会分析与stl相关的编译器诊断信息) |
| 54 | +- [第 50 条: 熟悉与 STL 相关的 Web 站点](#第-50-条-熟悉与-stl-相关的-web-站点) |
| 55 | + |
8 | 56 |
|
9 | 57 | ## 第 1 条:慎重选择容器类型
|
10 | 58 |
|
|
0 commit comments