C++STL

始、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
2
3
4
for_each(InputIterator beg, InputIterator end, Function f) {
while(beg != end)
f(*beg++);
}

三、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()