三月份开始复习泛型编程和STL的体系结构和内核分析,记录今天学的东西。
1. C++ Standard Library VS Standard Template Library
-
标准库是以head files的形式呈现的
-
C++的标准模板库 >= STL
2. STL六大部件
- 容器(Containers)
- 分配器(Allocators)
- 迭代器(Iterators)
- 适配器(Adapters)_变压器
- 算法(Algorithms)
- 仿函式(Functors)
1 |
|
注:
- count_if:algorithm
- not1:function adapter(negator)
- bind2nd:function adapter(binder)
- less:function object
3. Container——前闭后开区间 [ )
4. range-based for loop(since C++11)
1 | // 格式 |
5. auto keyword (since C++ 11)
1 | list<string> c; |
6.容器的结构与分类
-
不定序容器是红黑树
-
Set、Map中的key——不可重复
-
Multiset、Multimap中的key——不可重复
辅助函数
1 | using std::cout; |
Array容器
1 |
|
技巧:
- 测试代码最好也要封装成函数;
- 用namespace可以避免变量冲突
- 变量随用随定义是最好顶格写,这样方便查找!
vector容器
1 |
|
说明:
- 容器的capacity的是成倍数增长的,在另外的地方开辟内存然后再将原来的复制到新的,过程比较慢
- 循序查找不一定比sort后bresearch慢,由此思考时间复杂度
- 所有的算法都是全局函数
- 容器的定义都有第二参数分配器,一般用默认