Boolan C++标准库 第一周

2017-08-24  本文已影响0人  MRSUMMER163

C++标准库

第一讲

一、认识headers、版本

1.C++标准库 vs STL

    C++标准库大于STL(标准模板库)

标准库以header files形式呈现

网站

cplusplus.com

cppreference.com

gcc.gnu.org

二、STL体系结构基础介绍

1.STL六大部件

容器(containers)

分配器(allocators)

算法(algorithms)

迭代器(iterators)

适配器(adapters)

仿函数(functors)

 

分配器处理内存分配。分配器可以不写,会有默认的分配器。

iterator 泛化的指针

 

C++11

range-based for

auto keyword

 

三、容器之分类与各种测试(一)

1.容器-结构与分类

(1)Sequence Containers

Array(C++11)

Vector

Deque

List 双向链表

Forward-List(C++11)

(2)Associative Containers

Set/Multiset 红黑树(高度平衡二分树)每个节点key和value是同一个

Map/Multimap 红黑树 map每个节点有key和value

Multi可以重复

(3)Unordered Containers(C++11)

Unordered Set/Multiset

Unordered Map/Multimap

HashTable Separate Chaining

2.使用容器array

    不能扩充。

四、容器之分类与各种测试(二)

1.使用容器vector

find 0秒?

vector扩展方式:两倍扩展

 

五、容器之分类与各种测试(三)

1.使用容器list

list:双向链表

vector是一块连续的空间,每次扩展时需要重新申请两倍的空间

2.使用容器list

list:双向链表

list自己也有sort,要比全局的sort快

3.使用容器forward list

forward list:单向链表

4.使用容器deque

deque:双向进出

分段连续,每一段(buffer)是连续的。每次扩容一个buffer。

deque没有sort,需要用全局sort

5.使用容器stack

stack:先进后出

没有iterator

6.使用容器queue

queue:先进先出

六、容器之分类与各种测试(四)

1.使用容器multiset

multiset:可以重复

insert

自己find比全局find快

2.使用容器multimap

pair

3.使用容器unordered_multiset

使用hashtable实现

篮子(bucket_count())比元素多,有的篮子没有元素

4.使用容器unordered_multimap

 

5.使用容器set

 

6.使用容器map

7.使用容器hash_set/hash_map/hash_multiset/hash_multimap

七、分配器之测试

allocator

 

 

上一篇下一篇

猜你喜欢

热点阅读