六、标准模板库(Standard Templates Library,STL)
1.十大容器
(1)线性容器
- 向量(vector):单端开放的动态数组,只能在尾端
- 双端队列(deque):双端开放的动态数组
- 列表(list):双向线性链表
(2)适配器容器
- 堆栈(stack):后进先出
- 队列(queue):先进先出
- 优先队列(priority_queue):优先级高先出(默认谁大先先出)
(3)关联容器
- 映射(map):以键作为基准的存放键—值对的平衡有序二叉树。键必须唯一!
- 多重映射(multimap):允许键重复的映射。
- 集合(set):映射的简化形式,只有键,没有值。
- 多重集合(multiset):只有键没有值的多重映射。
2.向量
(1)基本特性
- 连续内存空间,提供通过下标访问元素的方式。O(1)
- 动态内存管理,同时也支持静态预分配。
(2)实例化:#include <vector>
- 空向量:vector<元素类型> 向量对象;
-
vector<int> vi; cout << vi.size() << endl; // 0 cout << sizeof(vi) << endl; //12 - 预分配:vector<元素类型> 向量对象(初始大小);
-
vector<int> vi(3); //0 0 0 基本类型:用相应类型的“0”初始化 类类型:调用缺省构造函数初始化 - 设初值:vector<元素类型> 向量对象(初始大小,初值);
-
vector<int> vi(3,5); //5 5 5 vector<Student> vs(3,Student("张飞“,20));
从其他容器复制:vector<元素类型> 向量对象(源起始迭代器,源终止迭代器);
注意:在STL中凡是提高一个范围的终止迭代器,其实是指该范围中最后一个元素的下一个位置迭代器。
(3)迭代器
在STL中只有向量和双端队列这两个容器采用的是连续内存的存储结构,因此这有他们的迭代器是堆积迭代器,而其他容器都只提供顺序迭代器。
- A:随机迭代器与顺序迭代器:随机迭代器比顺序迭代器增加了如下功能:
- 可以和整数做加减运算——一次迭代多个位置
- 同型迭代器可以做大小比较——反映了元素的顺序
- 同型迭代器其可以做相减运算——反应了元素的距离
- B:四个迭代器类型
- 正向可写迭代器:
- 正向只读迭代器:
- 反向可以迭代器:
- 反向只读迭代器:
- C:八个特征迭代器:
- begin()
- begin()const
- end()
- end()const
- rbegin()
- rbegin()const
- rend()
- rend()const
- 正向迭代器:起始->首元素,终止->尾元素之后,增向尾,减向头
- 反向迭代器:起始->尾元素,终止->首元素之前,增向头,减向尾
- 可写迭代器:可被视如普通指针,可修改其目标元素的值。
- 只读迭代器:可被视如敞亮指针,不可修改其目标元素的值。
本文详细介绍了C++标准模板库(STL)的十大容器,包括线性容器、适配器容器和关联容器,以及向量的基本特性和实例化方式。深入探讨了向量的连续内存空间特性、动态内存管理机制和迭代器使用方法。
2万+

被折叠的 条评论
为什么被折叠?



