CPP

STL 的数据结构和内部实现

2018-04-03  本文已影响140人  顽强的猫尾草

STL(Standard Template Library)是 C++ 泛型编程(Generic Programming)的体现,将算法从数据结构中抽象出来,以相同或相近的方式处理各种不同情形。

STL 的组件共分为六类:

主要总结一下前两类:容器和容器适配器~

一、Container(容器)

顺序容器

1. vector

2. deque

3. list

4. slist

关联容器

1. set

2. multiset

3. hash_set

4. hash_multiset

5. map

6. multimap

7. hash_map

8. hash_multimap

建议:
1)当元素的有序比搜索速度更重要时,应选用 set、multiset、map 或 multimap。否则,选用 hash_set、hash_multiset、hash_map 或 hash_multimap。
2)若经常需要在序列容器的开头或中间增加或删除元素时,应选用 list。
3)当容器作为参数被传递时,请采用引用传递方式。否则将调用容器的拷贝构造函数,其开销是难以想象的。

二、Adapter(适配器)

C++ 中定义了 3 种容器适配器,它们让容器提供的接口变成了我们常用的的 3 种数据结构:栈、队列和优先级队列。

1. stack

2. queue

3. priority_queue

建议:当需要 stack、queue 或 priority_queue 这样的数据结构时,直接使用这些对应的容器类,不要使用 deque 去做它们类似的工作。

上一篇 下一篇

猜你喜欢

热点阅读