GeekBand STL与泛型编程 -- 2

1. 关联容器

GeekBand STL与泛型编程 -- 2_第1张图片
关联容器
  1. 关联容器与顺序容器有着根本的不同:关联容器中的元素是按照关键字来保存和访问的。与之相对,顺序容器中的元素是按照它们在容器中的位置来顺讯保存和访问的。
  2. multi 表示允许重复关键字; map 和 multimap 定义在头文件 map 中,set 和 multiset 定义在头文件 set 中;
迭代器种类

一定要知道每种容器迭代器的种类,因为在使用各种算法时,算法会有“暗示”,例如


GeekBand STL与泛型编程 -- 2_第2张图片
“暗示”

此算法就需要迭代器是 random access 的, 所以就不能使用。

GeekBand STL与泛型编程 -- 2_第3张图片
继承关系

4.set 能力与操作


GeekBand STL与泛型编程 -- 2_第4张图片
set

5.multiset 能力与操作


GeekBand STL与泛型编程 -- 2_第5张图片
multiset

6.map 能力与操作


GeekBand STL与泛型编程 -- 2_第6张图片
map

4.multimap 能力与操作


GeekBand STL与泛型编程 -- 2_第7张图片
multimap

2. 容器适配器

GeekBand STL与泛型编程 -- 2_第8张图片
容器适配器
  1. stack 操作


    GeekBand STL与泛型编程 -- 2_第9张图片
    stack
  2. queue 操作


    GeekBand STL与泛型编程 -- 2_第10张图片
    queue
queue

stack

由图可见:这两个特殊容器都是由 deque 进行包装后的适配器。

3. 仿函数

  1. 所谓 function object (或者说 functor) 是一个定义了 operator() 的对象,因为它是一个对象,像一个函数。
  2. c++标准库提供了许多预定义的 functor 和 binder ,后者允许合成更多精巧的 functor , 使用这些时,要包含
  3. 注意过时的若干适配器
    GeekBand STL与泛型编程 -- 2_第11张图片
    Paste_Image.png
    注:最重要的变动是 bind 来替代 bind1st , bind2nd.
  4. 在c++2.0 中,还可以使用 lambda 替换定制的 functor .
注: 笔记中基本所有截图都来自于 www.cpluscplus.com
注: 下周笔记统一讲算法。

你可能感兴趣的:(GeekBand STL与泛型编程 -- 2)