GeekBand C++ STL与泛型编程 第一周学习笔记

STL概述

C++标准库包含STL和一些其他内容

STL有六大组件:

容器,分配器,算法,迭代器,适配器,仿函数

复杂度,Complexity,BIG-O

1.常数时间复杂度

2.线性时间复杂度

3.次线性时间复杂度

4.平方时间复杂度

5.立方时间复杂度

6.指数时间复杂度

7.介于线性及二次方成长的中间时间复杂度

容器

顺序性容器

array

不能增长 提供size() front() back() data()等操作

可以进行随机访问

vector

只可在尾部进行插入操作,插入速度较快

提供front() back() data() capacity()

capacity会成二的倍数增长

可以进行随机访问

list

含有两根指针, 物理地址不一定连续

插入速度很快

无法进行随机访问 ,需要遍历才可得到指定位置

forword-list

只含有一根指针,物理地址不一定连续

提供向前插入

占用空间更小

slist

gnu中的扩展控件

是forward_list的一种早期实现方式

deque

双向开口的连续空间

每一段成为一个缓冲 buffer

stack

先进后出的一种辅助容器,底层可以由deque实现

queue

先进先出的一种辅助容器,底层可以有deque实现

关联性容器

(multi)set (multi)map

multi类型可以一个键对应多个值

set的元素只有一个 

map的元素是一个pair 分别为key 和value

底层为RB Tree

unordered容器

unordered_(multi)map unordered_(multi)set

底层为HashTable

bucket数可以大于后面挂的项数

分配器

GNU C提供的扩展控件

array_allocator

mt_allocator

debug_allocator

pool_allocator

malloc_allocator

new_allocator

在功力并不深厚时 尽量使用std自带的分配器 不要自己手动使用

你可能感兴趣的:(GeekBand C++ STL与泛型编程 第一周学习笔记)