本篇文章,我们来学习一下什么是STL以及各大容器的特点,博主会用最通俗易懂的语言给大家讲解。
目录
什么是STL?
STL全称:Standard Template Library,从广义上分,可以分为:算法,容器,迭代器。
容器和算法通过迭代器之间进行无缝衔接
STL几乎所有代码都采用了模板类或者模板函数
STL的六大组件
容器、算法、迭代器、适配器(配接器)、仿函数、空间配置器
容器种类
容器分为:序列式容器和关联式容器
迭代器种类
现在最常用的就是双向迭代器和随即访问迭代器
迭代中的“三足鼎立”
string容器
构造函数原型及代码意思
赋值函数的原型以及代码意思
字符串拼接函数原型以及代码意思
字符串查找、替换函数原型以及代码意思
字符串的比较
字符存取
读
写
字符串的删除
字符子串的获取
vector容器
vector就是数据结构中的顺序表
vector与数组的区别
数组是静态的,vector可以动态扩展
赋值操作
赋值的三种方式
for (int i = 0; i < 10; i++)
v1.push_back(i);
printVector(v1);
vector<int>v2;
//第一种
v2 = v1;
printVector(v2);
第二种
vector<int>v3;
v3.assign(v1.begin(), v1.end());
printVector(v3);
第三种
vector<int>v4;
v4.assign(10, 100);
printVector(v4);
容量和大小
插入和删除
数据存取
互换容器
使用方法:对象名.swap(元素);将元素与自身进行交换
预留空间
deque容器
deque与vector的区别
vector对于头部的插入和删除效率低,数据量越大,效率越低
deque相对而言,头部的插入和删除比vector快
vector访问元素时的速度回避deque快,这和两者内部实现有关
工作原理
赋值操作
大小操作
需要注意的是deque没有容量的概念!!!!
总结:
插入和删除
数据存取
排序
需要包含头文件<algorithm>
stack容器
特点;先进后出
常用接口
queue容器
构造函数
特点:先进先出
常用接口
大根堆关键字:priority_queue
list容器
构造函数
赋值和交换
大小操作
插入和删除
数据存取
反转和排序
注意:不支持随机访问迭代器的容器,不能用标准算法
set容器
简介:所有元素会在插入时自动被排序
本质:set/multiset都属于关联式容器,底层都是二叉树
区别:set:不允许容器中有重复的元素
multiset:允许容器中有重复的元素
构造与赋值
大小和交换
插入和删除
查找和统计
仿函数
pair对组
map容器
构造和赋值
注意:map中所有元素都是成对出现,因此在插入数据时要用对组
大小和交换
插入和删除
查找和统计
find(key)查找 ——>返回的是迭代器
count(key) 统计 ——>对于map而言是返回0或1
map和multimap的区别
总结:multimap允许重复的key存在
map不允许重复的key存在
文章总结:
1.本篇文章,仅能速成,对于这些容器的底层还需另行学习
2.使用方法:对象名.接口名
本篇文章的内容就先到这里,我们下期文章再见。
记得一键三连哦!