草庐IT

stl_algobase

全部标签

C++STL-无序容器-哈希表(散列存储)

有关于STL中的哈希表一些基础知识为什么要设计哈希表——查找元素效率高O(1),和关联式容器相比,无序容器擅长通过指定键查找对应的值;但对于使用迭代器遍历容器中存储的元素,无序容器的执行效率则不如关联式容器。通过什么机制实现的——关键字通过哈希函数O(1)可以直接确定哈希地址,常见的有直接定址法、除留余数法会产生什么问题——不同的关键字可能会得到相同的哈希地址,称为哈希碰撞如何解决哈希碰撞——闭散列找空位置(每次向后找1或i^2),或者开散列在同一个哈希地址的键值对存在同一个哈希桶中,哈希桶可以是单链表或红黑树,哈希地址中存放单链表头结点或红黑树根节点存放在闭散列和开散列比较——开散列更加实用

22 标准模板库STL之容器适配器

概述        提到适配器,我们的第一印象是想到设计模式中的适配器模式:将一个类的接口转化为另一个类的接口,使原本不兼容而不能合作的两个类,可以一起工作。STL中的容器适配器与此类似,是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能和接口。之所以将其称为容器适配器,是因为它通过适配已有容器现有的接口来提供不同的功能和接口。        STL中的容器适配器包括:stack、queue和priority_queue,下面分别进行介绍。stack        1、stack是一个封装了deque容器的适配器类模板,默认实现的是一个后入先出的压入栈,从容器的尾部(栈

【STL】vector的使用

目录前言默认成员函数构造函数拷贝构造赋值重载迭代器正向迭代器反向迭代器容量管理查看容量和大小扩容判空访问数据下标访问边界访问数据修改尾插尾删指定位置插入删除迭代器失效 清空​编辑交换查找数据vector可以代替string吗前言讲完string和string的模拟实现,今天讲讲vector的使用。虽然说它叫vector,使用时还是我们平常使用的数组,只不过会自动地调节分配的空间。由于在空间中使用的一块连续的空间,因此支持下标访问,使用起来相当地便利,与我们之前学习的string的区别就在于,string只能存储字符,而vector可以存储任意类型的数据。默认成员函数构造函数在C++98中有三种

C++ STL 标准模板库介绍与入门

目录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

C++之STL顺序容器

目录一、STL容器简介二、顺序容器 一、STL容器简介STL容器是一个通用的数据结构,可以处理不同数据类型,包含基本的数据结构如链表、堆栈、队列等。可以分为顺序容器、关联容器、容器适配器、特殊容器。本篇博客将简要介绍一下STL容器中的顺序容器。二、顺序容器2.1.特点:•元素的添加或插入位置与元素的值无关•无自动排序 2.2分类:1.向量(动态数组vector)•在内存中占有一块连续的空间(动态数组)•可自动扩充且提供越界检查•适合在向量末尾插入或删除数据•可用[]运算符直接存取数据在定义成员时格式如下:vector名称再利用各指令对创建出的动态数组进行修改。代码如下:#include#inc

深入探究C++中的STL:容器、迭代器与算法全解析

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

【STL】模拟实现vector(详解)

文章目录前言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类可以帮助我们更加深入的了解它具体是怎么一回事?它的内部结构是怎么样的?如果以后我们写

【C++】STL——list深度剖析 及 模拟实现

文章目录前言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

STL常用梳理——STACK、QUEUE

STL——适配器篇1、ListSTLlist容器介绍list使用2、适配器介绍3、Deque容器Stack、Queue适配器实现1、ListSTLlist容器介绍STLlist容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。可以看到,list容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备了2个指针,分别指向它的前一个元素和后一个元素。其中第一个元素的前向指针总为null,因为它前面没有元素;同样,尾部元素的后向指针也总为null。基于这样的存储结构,list容器具有一些其它

C++ [STL-简介]

本文已收录至《C++语言和高级数据结构》专栏!作者:ARMCSKGT​​​​​​​​文章目录前言正文简介关于STL各种版本STL组件容器迭代器配接器(适配器)算法仿函数空间配置器STL的重要性学习STL的意义如何学习STLSTL的缺陷最后前言STL(standardtemplatelibaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。正文简介关于STLSTL(StandardTemplateLibrary)标准模板库,从根本上说,STL是一些数据结构的集合,因为是组织和存放数据简称为容器,这些“容器”有list、vecto