加载中...

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. 把十进制1转换为二进制:0001
  2. 将0001左移2位并补0:0100
  3. 将0100转换为十进制:4

右移>>:把数字(二进制)右移n位,空余补零

5 >> 2

  1. 把十进制5转换为二进制:0101
  2. 将0101右移2位并补零:0001
  3. 将0001转换为十进制:1

数字的加|

cout << 1 | 2;报错

cout << (1 | 2);打印3

原贴:wolai

posted @ 2022-02-07 22:57  星芒易逝  阅读(253)  评论(0)    收藏  举报