C++STL初识和各大容器详解

发布于:2025-02-10 ⋅ 阅读:(62) ⋅ 点赞:(0)

本篇文章,我们来学习一下什么是STL以及各大容器的特点,博主会用最通俗易懂的语言给大家讲解。

目录

什么是STL?

STL的六大组件

容器种类

迭代器种类

迭代中的“三足鼎立”

string容器

构造函数原型及代码意思

赋值函数的原型以及代码意思

字符串拼接函数原型以及代码意思

字符串的比较

字符存取

字符串的删除

字符子串的获取

vector容器

vector与数组的区别

赋值操作

容量和大小

插入和删除

​编辑 数据存取

互换容器

预留空间

deque容器

deque与vector的区别

工作原理

​编辑

赋值操作

大小操作

插入和删除

数据存取

排序

stack容器

常用接口

queue容器

构造函数

常用接口

大根堆关键字:priority_queue

list容器

构造函数

赋值和交换

 大小操作

插入和删除

数据存取

反转和排序

set容器

构造与赋值

大小和交换

插入和删除

查找和统计

仿函数

pair对组

map容器

构造和赋值

大小和交换

插入和删除

查找和统计

map和multimap的区别

什么是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.使用方法:对象名.接口名

本篇文章的内容就先到这里,我们下期文章再见。

记得一键三连哦!


网站公告

今日签到

点亮在社区的每一天
去签到