✨个人主页:北海🎉所属专栏:C++修行之路🎃操作环境:VisualStudio2019版本16.11.17文章目录🌇前言🏙️正文1、优先级队列的使用1.1、基本功能1.2、优先级模式切换1.3、相关题目2、模拟实现优先级队列2.1、构造函数2.2、基本功能2.3、仿函数的使用2.4、特殊场景3、源码🌆总结🌇前言优先级队列priority_queue是容器适配器中的一种,常用来进行对数据进行优先级处理,比如优先级高的值在前面,这其实就是初阶数据结构中的堆,它俩本质上是一样东西,底层都是以数组存储的完全二叉树,不过优先级队列priority_queue中加入了泛型编程的思想,并且属于STL中的一部
文章目录前言STL之list基础知识1.list的介绍2.list的使用2.1list的构造2.2listiterator的使用2.3空间相关2.4元素访问2.5相关函数2.6list的迭代器失效3.list与vector的对比后记前言本篇将学习list的基础知识🕺作者:迷茫的启明星专栏:《C++初阶》😘欢迎关注:👍点赞🙌收藏✍️留言🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!持续更新中~STL之list基础知识1.list的介绍list的文档介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底
有关于STL中的哈希表一些基础知识为什么要设计哈希表——查找元素效率高O(1),和关联式容器相比,无序容器擅长通过指定键查找对应的值;但对于使用迭代器遍历容器中存储的元素,无序容器的执行效率则不如关联式容器。通过什么机制实现的——关键字通过哈希函数O(1)可以直接确定哈希地址,常见的有直接定址法、除留余数法会产生什么问题——不同的关键字可能会得到相同的哈希地址,称为哈希碰撞如何解决哈希碰撞——闭散列找空位置(每次向后找1或i^2),或者开散列在同一个哈希地址的键值对存在同一个哈希桶中,哈希桶可以是单链表或红黑树,哈希地址中存放单链表头结点或红黑树根节点存放在闭散列和开散列比较——开散列更加实用
概述 提到适配器,我们的第一印象是想到设计模式中的适配器模式:将一个类的接口转化为另一个类的接口,使原本不兼容而不能合作的两个类,可以一起工作。STL中的容器适配器与此类似,是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能和接口。之所以将其称为容器适配器,是因为它通过适配已有容器现有的接口来提供不同的功能和接口。 STL中的容器适配器包括:stack、queue和priority_queue,下面分别进行介绍。stack 1、stack是一个封装了deque容器的适配器类模板,默认实现的是一个后入先出的压入栈,从容器的尾部(栈
目录前言默认成员函数构造函数拷贝构造赋值重载迭代器正向迭代器反向迭代器容量管理查看容量和大小扩容判空访问数据下标访问边界访问数据修改尾插尾删指定位置插入删除迭代器失效 清空编辑交换查找数据vector可以代替string吗前言讲完string和string的模拟实现,今天讲讲vector的使用。虽然说它叫vector,使用时还是我们平常使用的数组,只不过会自动地调节分配的空间。由于在空间中使用的一块连续的空间,因此支持下标访问,使用起来相当地便利,与我们之前学习的string的区别就在于,string只能存储字符,而vector可以存储任意类型的数据。默认成员函数构造函数在C++98中有三种
目录1、概述1.1、C++标准库1.2、Boost库2、STL版本2.1、HP原始版本2.2、P.J.实现版本2.3、RW实现版本2.4、SGI实现版本2.5、STLport实现版本3、STL的六大组件3.1、STL六大组件构成3.2、六大组件的交互关系4、STL的重要性5、总结VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycl
目录一、STL容器简介二、顺序容器 一、STL容器简介STL容器是一个通用的数据结构,可以处理不同数据类型,包含基本的数据结构如链表、堆栈、队列等。可以分为顺序容器、关联容器、容器适配器、特殊容器。本篇博客将简要介绍一下STL容器中的顺序容器。二、顺序容器2.1.特点:•元素的添加或插入位置与元素的值无关•无自动排序 2.2分类:1.向量(动态数组vector)•在内存中占有一块连续的空间(动态数组)•可自动扩充且提供越界检查•适合在向量末尾插入或删除数据•可用[]运算符直接存取数据在定义成员时格式如下:vector名称再利用各指令对创建出的动态数组进行修改。代码如下:#include#inc
C++基础知识四认识STL上一、概述1.起源StandardTemplateLibrary2.发展历程3.组成部分与内部实现原理4.优点和局限性4.1优点4.2局限二、容器1.定义2.序列容器2.1vector2.2deque2.3list2.4forward_list3.关联容器3.1set与multiset3.2map与multimap4.无序关联容器4.1unordered_set与unordered_multiset4.2unordered_mapun与ordered_multimap5.容器适配器5.1stack5.2queue5.3priority_queue三、迭代器1.1定义1
文章目录前言vector的模拟实现一,搭建框架二,实现构造函数三,构造的其他方式传统写法1.拷贝构造2.重载赋值操作符3.使用迭代器构造4.初始化为N个val的vector现代写法1.拷贝构造2.赋值重载四,实现vector相关函数1.reserve函数2,resize函数3,push_back函数4,pop_back函数5,insert函数6,erase函数源码后记前言本文将讲述怎么模拟实现vector类,有些同学可能会问了,我要实现这个有什么用?会用不就可以了吗?你没有错,但是我们通过模拟实现vector类可以帮助我们更加深入的了解它具体是怎么一回事?它的内部结构是怎么样的?如果以后我们写
文章目录前言1.list的介绍及使用1.1list的介绍1.2list的使用遍历插入删除数据Operations迭代器的功能分类list的sort性能测试2.list的模拟实现2.1STL_list源码浏览2.2基本结构实现2.3思考:list迭代器是否可以用原生指针2.4list迭代器的实现(重难点)list_iterator:结点指针的封装`*、前置++、!=`的重载begin、end思考其它运算符重载const迭代器代码优化:增加一个模板参数->的重载第三个模板参数2.5插入删除操作insertpush_back和push_fronterase、pop_back和pop_front2.6