STL:主要是一些“容器”的集合;“容器”有:vector(数组)、list(双向链表)、deque(双向队列)、set(集合)、map(图:内部结构红黑树)
STL也是算法和其他一些组件的集合,是泛型编程的一个经典范例。
STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。
-
STL六个组成部分
1、容器:特殊的数据结构,实现了数组、链表、队列等,实质是类模板。
2、迭代器:一种复杂的指针,可以通过其读写容器中的对象,实质是运算符重载。
3、算法:读写容器对象的逻辑算法:排序、遍历、查找.......,实质是模板函数。
4、空间配置器:分配空间。
5、配接器:用来修饰容器、仿函数、迭代器接口,配合仿函数使用。
6、仿函数:类似函数,通过重载()运算符来模拟函数行为的类
-
组件间的关系
容器通过配置器取得数据存储空间,算法通过迭代器存取容器内容,仿函数可以协助算法完成不同的策略变化,配接器可以修饰或套接仿函数。
-
vector(单向数组)
规定只能从尾巴进行插入、尾巴进行删除,数组空间可扩容。
可以在中间插入删除,但不建议使用。
成员函数(迭代器相关)
begin:返回指向元素首地址的迭代器(指向元素开头),++操作(后)右走iterator
end:返回指向元素末尾的迭代器,最后一个元素的下一个位置。iterator
rbegin:逆向迭代器(指向元素末尾),++操作(前)左走reverse_iterator
rend:逆向迭代器(指向元素开头)reverse_iterator
cbegin:返回一个常量迭代器,指向vector容器的第一个元素的位置。const_iterator
cend:返回一个常量迭代器,指向容器中最后一个元素的下一个位置。const_iterator
容量
size:返回元素个数。
max_size:容量
resize:改变大小
empty:判空
重载
[ ]
at
使用方法
push_back:入栈。
back:返回最后一个元素。
pop_back:出栈,删除,无返回值。
insert:插入
swap:交换
clear:清空
sort:排序,头文件<algorithm>
erase:删除迭代器指向元素/删除一段元素
例:
vector<int> arr; //定义了一个名为arr的vector容器,arr容器中每个元素为int类型。
vector<vector<int>> arr; //定义了一个名为arr的二维容器,此容器中每个元素是一个int类型的容
器。
vector<int> arr (5); //定义了一个名为arr的vector容器,vector容器中共有5个元素,每个元素