STL组件
- 容器 Containers,用来管理某类对象的集合。
- 迭代器 Iterators,用来在一个对象群集的元素上进行遍历动作,姑且可以理解为指针。
- 算法 Algorithms,用来处理集群内的元素。
STL容器的类型
- 序列式容器,每个元素有固定位置——取决于插入的时机和地点,于元素的值无关,vecto、deque、list、string
- 关联式容器,元素位置取决于特定的排序准则。与元素的值有关,和插入次序无关。set、multiset、map、multimap
STL容器和容器配接器介绍
- vector支持随机存取,在尾部添加和删除快速,头和中间慢
- push_back()在尾部添加(元素)
- pop_back()在部位删除
- size()返回容器中的元素个数(所有容器都有这个成员函数)
- deques 支持随机存取,双向队列,两端快中间慢
- push_back()尾插入 、push_front()头插入
- size()
- list 双向链表,不支持随机存取,插入速度快
- Set 元素依据其值自动排序,每个元素值只能出现一次,不允许重复
- Multiset 和set相同,它允许相同元素
- Map(key/value型)每个key只能出现一次
- Multimap 和Map相同,但是允许key相同。
下面的是容器配接器 - Stacks 采取LIFO(先进后出)管理
- Queue 采用FIFO(先进先出)管理
- Priority Queues 元素用有不同的优先权限(下一元素永远是优先级最高的元素)
STL迭代器介绍
- 可以使用的操作符 * 、++、 ==、 !=、=
- begin() 返回指向容器第一个元素的一个迭代器
- end() 返回指向容器最后一个元素之后的一个迭代器
STL迭代器类型介绍
- container::iterator “读/写”模式遍历元素
- container::const_iterator “只读”模式遍历元素
map容器的元素插入
利用pair
typedef multimap<int,string> IntStringMMap; IntStringMMap coll; coll.insert(make_pair(5, "tagged");
直接插入
typedef map<string,float> StringFloatMap; StringFloatMap coll; coll["VAT"] = 0.15;