STL
STL 将“在数据上执行的操作”与“要执行操作的数据分开”,分别以如下概念指代:
- 容器:包含、放置数据的地方。
- 迭代器:在容器中指出一个位置、或成对使用以划定一个区域,用来限定操作所涉及到的数据范围。
- 算法:要执行的操作。
标准模板库包含了序列容器(sequence containers)与关系容器(associative containers)。
序列容器包括vector,list,forward_list,deque和array等。
关联容器包括set,multiset,map,multimap,unordered_set,bitset和valarray等。
迭代器
迭代器是泛化的指针,通过使用迭代器,开发者可以操作数据结构而无需关心其内部实现。根据迭代器的操作方式的不同,迭代器分为五种:
-
输入迭代器
-
输出迭代器
-
前向迭代器
-
双向迭代器
-
随机访问迭代器
算法
STL提供了一些常见 的算法,如排序和搜索等。这些算法与数据结构的实现进行了分离。因此,用于也可对自定义的数据结构使用这些算法,只需让这些自定义的数据结构拥有算法所预期的迭代器。
函数对象
狭义的函数对象即重载了操作符()的类的实例,而广义来讲所有可用 x(...) 形式调用的 x 都可称为函数对象、或曰可调用对象。
适配器
适配器(Adaptor)为一个模板类,用于提供接口映射。
左移右移
左移<<:把数字(二进制)左移n位,空余补零
1 << 2
- 把十进制1转换为二进制:0001
- 将0001左移2位并补0:0100
- 将0100转换为十进制:4
右移>>:把数字(二进制)右移n位,空余补零
5 >> 2
- 把十进制5转换为二进制:0101
- 将0101右移2位并补零:0001
- 将0001转换为十进制:1
数字的加|
cout << 1 | 2;
报错
cout << (1 | 2);
打印3
原贴:wolai