前言
本文主要介绍C++中STL中的stack、queue和list容器
7.5:stack容器
7.5.1:stack容器基本概念
栈中只有顶端元素才可以被外界调用,因此栈不允许有遍历的行为,其中string、vector、deque都可以遍历
7.5.2:栈的常用接口(push、pop、top、empty、size、operator=)
7.6:queue容器
7.6.1:queue的基本概念
队列中队头出数据,队尾进数据,且和栈一样不允许有遍历操作
7.6.2:queue的常用接口(push、pop、front、back、size、empty)
queue容器装入自定义数据类型数据
7.7:list容器(双向循环链表)
7.7.1:list基本概念
链表由一系列的结点组成,结点是由数据域和指针域所组成。
链表优缺点
优点:可以对任意位置数据进行插入或删除
缺点:访问速度较慢、占用更大的空间
STL中的list是一个双向循环链表,list的迭代器是双向迭代器,不能跳跃式访问
相对于vector,经过插入或删除操作list原有的迭代器都不会失效,而vector的迭代器可能会失效。因为当vector容器插入数据量过大,那么系统会重新给vector分配空间,这时原有数据保存的位置都会发生改变,原有迭代器就会失效。删除也同理。
7.7.2:list的构造函数(无参构造、拷贝、区间、指定多个相同数据)
7.7.3:list的赋值和交换(operator=、assign、swap)
7.7.4:list大小操作(size、empty、resize)
在使用resize的时候出现了一点问题,使用resize进行缩小的时候会报错,正常将list放大不会报错
这时我想用resize进行缩小一下,让链表的长度变为2,这时会报错
我看了看resize的原型,一个参数的版本是灰色的,被注释掉了
在类中给构造函数指定默认参数就可以解决,编译可以通过,可以正常打印
不指定默认参数可也可以,制定一个对象就好了,本质还是调用了两个参数的resize方法
7.7.5:list插入和删除(push_back、push_front、pop_back、pop_front、insert、clear、erase、remove)
在使用remove的时候又遇到了一些问题,说是无法比较两个对象,其实就是要对==进行运算符重载
在Person类中对==进行运算符重载
使用remove删除符合的全部对象
7.7.6:list容器数据存取(front、back)
判断一个容器的叠加器是否支持随机访问,可以验证叠加其是否重载了operator+或者operator-。如果重载了,那么就支持随机访问,不支持随机访问迭代器的容器不能使用标准算法。
7.7.7:list容器元素翻转和排序(reverse、sort)
要对Person类的<运算符进行重载才可以正常编译,默认使用的sort是升序
文章来源:https://www.toymoban.com/news/detail-497036.html
想要让list是降序排列,要写一个回调函数
文章来源地址https://www.toymoban.com/news/detail-497036.html
总结
以上就是本文的全部内容,非常感谢你能看到这
到了这里,关于C++基础(13)——STL(stack、queue、list)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!