始、STL初识
STL(standard template library)标准模板库
广义上分为容器、算法、迭代器(容器和算法之间通过迭代器无缝连接)
六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器
主要学习以下四个:
容器:vector、list、deque、set、map等
**算法(Algorithms)**:sort、find、copy、for_each等
迭代器:扮演容器与算法之间的胶合剂(每个容器都有自己专属的迭代器),迭代器可以理解成指针
仿函数:类似函数,可作为算法的某种策略
一、vector容器
vector容器可以理解成数组
初始化:vector<数据类型> 容器名 (容器大小)
容器输入:容器名. push_back(数据)
,尾插法插入数据
起始迭代器:容器名. begin()
,指向第一个元素
结束迭代器:容器名. end()
,指向最后一个元素的下一个位置
自定义专属迭代器:vector<数据类型> : : iterator 迭代器名
二、遍历算法:for_each
1 | for_each(InputIterator beg, InputIterator end, Function f) { |
三、map/multimap容器
map容器可以理解成哈希表(第三常用)
map中每个元素都是pair(对组元素)
pair中第一个元素为key(键值),第二个元素为value(实值)
所有元素会根据键值自动排序
map不允许容器中有重复的key值,multimap允许容器中有重复的key值
默认构造:map<key类型, value类型> 容器名
拷贝构造:map<key类型, value类型> 容器名 (拷贝容器名)
赋值:容器名 = 目标容器名
插入数据:容器名. insert(pair<key类型, value类型>(key, value))
四、stack容器
stack容器可以理解成栈
栈是一种**先进后出(FILO)**的数据结构,只有一个出入口
栈不允许有遍历行为,但可以判断是否为空、可以获取元素个数
默认构造:stack<数据类型> 容器名
拷贝构造:stack<数据类型> 容器名 (拷贝容器名)
赋值操作:容器名 = 目标容器名
入栈:push(elem)
出栈:pop()
栈顶:top()
判空:empty()
获取大小:size()