引言:北京时间:2023/3/14/20:09,晚上没课,开心,但是等一下要去练习如何晨跑,并且明天要起床晨跑,不开心,今天博客更新啦!并且明天是周三(课少),所以明天这篇博客就可以发啦!开心,终于又实现了日更博客了,爽!怀念以前在家的时间,每天都可以更新博客,然后CSDN平台会一直帮我推送文章,导致那时候,我的文章都是领域榜的前三名,可惜现在更新没有那么积极了,它居然不给我推了,想哭,不开心;OK,搞笑完毕,开始学习,今天我们就一起学习一下STL容器中的栈和队列的使用(题目)和STL中栈和队列的自我实现,以这些内容为目标,冲冲冲!不过前提是需要把list给收尾一下,哈哈哈!收尾list上篇博
文章目录测试环境multimap介绍头文件模块类定义对象构造初始化元素访问元素插入和删除元素查找容器大小迭代器其他函数测试环境系统:ubuntu22.04.2LTS64位gcc版本:11.3.0编辑器:vsCode1.76.2multimap介绍关联式容器。每个元素都包含用于排序的键和对应的值。键值是不要求唯一(map中键要求唯一),同一个键可以对应多个值。支持双向迭代器。在插入、删除和搜索时间复杂度为log(n)。键不可以直接修改,需要先删除,再添加;值可以直接修改头文件#include模块类定义templatetypename_Key,typename_Tp,typename_Compar
文章目录测试环境multimap介绍头文件模块类定义对象构造初始化元素访问元素插入和删除元素查找容器大小迭代器其他函数测试环境系统:ubuntu22.04.2LTS64位gcc版本:11.3.0编辑器:vsCode1.76.2multimap介绍关联式容器。每个元素都包含用于排序的键和对应的值。键值是不要求唯一(map中键要求唯一),同一个键可以对应多个值。支持双向迭代器。在插入、删除和搜索时间复杂度为log(n)。键不可以直接修改,需要先删除,再添加;值可以直接修改头文件#include模块类定义templatetypename_Key,typename_Tp,typename_Compar
为什么各方面表现都比较中等,适用范围广尾插很快,查找也比较快是什么动态数组特点:动态数组,三个指针控制两倍增长扩充的方法:不能原地扩充,因为后面可能会有其他的东西,必须在其他地方开辟一块更大的内存提供[]所有的有连续空间的容器都有[]iterator是class类型的怎么样制造两倍增长//push_back()检查剩余的空间//有,继续增长//没有,计算 //开始是不是0 //是0放1个//不是0分配两倍的空间//将原来内容拷贝到新的vector(拷贝构造)//原来的要删掉(析构)//插进最新push_back的元素使用初始化//重载vectorvec={1,2,3};//拷贝vectorv
为什么各方面表现都比较中等,适用范围广尾插很快,查找也比较快是什么动态数组特点:动态数组,三个指针控制两倍增长扩充的方法:不能原地扩充,因为后面可能会有其他的东西,必须在其他地方开辟一块更大的内存提供[]所有的有连续空间的容器都有[]iterator是class类型的怎么样制造两倍增长//push_back()检查剩余的空间//有,继续增长//没有,计算 //开始是不是0 //是0放1个//不是0分配两倍的空间//将原来内容拷贝到新的vector(拷贝构造)//原来的要删掉(析构)//插进最新push_back的元素使用初始化//重载vectorvec={1,2,3};//拷贝vectorv
为什么各方面表现都比较中等,适用范围广尾插很快,查找也比较快是什么动态数组特点:动态数组,三个指针控制两倍增长扩充的方法:不能原地扩充,因为后面可能会有其他的东西,必须在其他地方开辟一块更大的内存提供[]所有的有连续空间的容器都有[]iterator是class类型的怎么样制造两倍增长//push_back()检查剩余的空间//有,继续增长//没有,计算 //开始是不是0 //是0放1个//不是0分配两倍的空间//将原来内容拷贝到新的vector(拷贝构造)//原来的要删掉(析构)//插进最新push_back的元素使用初始化//重载vectorvec={1,2,3};//拷贝vectorv
为什么各方面表现都比较中等,适用范围广尾插很快,查找也比较快是什么动态数组特点:动态数组,三个指针控制两倍增长扩充的方法:不能原地扩充,因为后面可能会有其他的东西,必须在其他地方开辟一块更大的内存提供[]所有的有连续空间的容器都有[]iterator是class类型的怎么样制造两倍增长//push_back()检查剩余的空间//有,继续增长//没有,计算 //开始是不是0 //是0放1个//不是0分配两倍的空间//将原来内容拷贝到新的vector(拷贝构造)//原来的要删掉(析构)//插进最新push_back的元素使用初始化//重载vectorvec={1,2,3};//拷贝vectorv
.在上一节我们实现的MyVector存在哪些问题?问题1现在有Student类classStudent{public:Student(){coutv1[1000];我只是希望创建一个能放1000个Student的Vector,但是开始并不放任何内容,但是发现编译器除分配了1000个student对象的空间,还创建了1000个对象,在main函数结束后再析构这1000个对象,这就是问题1,这1000个对象并不是我需要的,原因如下,在MyVector的构造函数中T*_tep=newT[size]();这个new除了分配空间,还会调用对象的构造函数完成对象的初始化换句话说就是空间的分配和对象的创建联
.在上一节我们实现的MyVector存在哪些问题?问题1现在有Student类classStudent{public:Student(){coutv1[1000];我只是希望创建一个能放1000个Student的Vector,但是开始并不放任何内容,但是发现编译器除分配了1000个student对象的空间,还创建了1000个对象,在main函数结束后再析构这1000个对象,这就是问题1,这1000个对象并不是我需要的,原因如下,在MyVector的构造函数中T*_tep=newT[size]();这个new除了分配空间,还会调用对象的构造函数完成对象的初始化换句话说就是空间的分配和对象的创建联
STL(standardtemplatelibaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。通俗来说:STL就是将常见的数据结构(例如顺序表,链表,栈,队列,二叉树,哈希...)以模板的形式进行封装,使用时,不用我们人为再去写,可以直接调用。并且包含常见的通用的泛型算法(一些常规的算法也不用自己实现,可以直接调用)通用的泛型算法两大特性:通用的:对于任意类型的数据结构都可以处理。(线性表,链表,二叉树....)模板实现:以模板的方式实现,对于任意数据类型都可以处理。(int/double/short/long.....)