草庐IT

stl_algobase

全部标签

【C++】STL---list基本用法介绍

个人主页:平行线也会相交💪欢迎点赞👍收藏✨留言✉加关注💓本文由平行线也会相交原创收录于专栏【C++之路】💌本专栏旨在记录C++的学习路线,望对大家有所帮助🙇‍希望我们一起努力、成长,共同进步。🍓list是STL中的一种容器,底层其实就是一个双向链表。既然底层实现是双向链表,所以list重要的一点就是插入和删除操作的时间复杂度为常数时间O(1),这是因为链表的结构不需要像数组一样进行内存重排。当然,如果要频繁访问链表中的元素,需要沿着链表进行遍历,这导致list容器访问操作的时间复杂度为O(n)。下面将对list中的常见的用法进行一一介绍。目录一、创建变量二、增删查改1️⃣插入元素2️⃣删除3️

[STL] vector 模拟实现详解

目录一,准备工作二,push_back  1,关于引用2.参数const的修饰 补充三,迭代器实现四,Pop_back五,insert1.补充——迭代器失效六,erase七,构造函数 1.迭代器构造 2.其他构造3.拷贝构造 1)传统写法2)现代写法(提高函数复用性) 八,赋值符号重载九,resize 一,准备工作   准备工作中,需要前面所学的,命名空间, 类模板知识,以及我们实现之前需要借鉴一下STL源代码如何实现。开始实现前,我们先熟悉一下vector 的框架://头文件#include#includeusingnamespacestd;namespacemy_vector//里面我们使

【STL】“list“容器从使用到模拟实现

"list"容器从使用到模拟实现一、list介绍二、list的使用list的构造迭代器empty和sizefront和backlistmodifierslist迭代器失效问题三、list的模拟实现list的结构模型成员变量初始化函数构造函数拷贝构造clear()析构函数迭代器swap()重载=赋值运算符insert()erase()size()头插/删、尾插/删总结🍀小结🍀🎉博客主页:小智_x0___0x_🎉欢迎关注:👍点赞🙌收藏✍️留言🎉系列专栏:C++初阶🎉代码仓库:小智的代码仓库一、list介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。l

【STL】 模拟实现简易 vector

目录1.读源码2.框架搭建3.vector的迭代器4.vector的拷贝构造与赋值拷贝构造赋值5.vector的常见重要接口实现operator[]的实现insert接口的实现erase接口实现pop_back接口的实现resize接口实现源码分享写在最后:1.读源码想要自己实现一个vector,读源码来理解他的实现是必不可少的一个步骤,但是,当我们拿到vector的源码之后,一堆代码,我们应该从何看起呢?我们当然是从一个类的核心读起,也就是从他的成员变量开始读:这里我们找到了他的成员变量,他的类型是iterator,这又是个啥,我们来溯源一下:我们可以看到,实际上iterator就是一个T*

【C++】STL---vector基本用法介绍

个人主页:平行线也会相交💪欢迎点赞👍收藏✨留言✉加关注💓本文由平行线也会相交原创收录于专栏【C++之路】💌本专栏旨在记录C++的学习路线,望对大家有所帮助🙇‍希望我们一起努力、成长,共同进步。🍓vector是C++STL中的一种动态数组容器,用于存储和操作一系列的元素。同时vector提供了灵活的大小调整、随机访问、连续存储、动态内存管理等特点。注意使用vector前需要包含头文件#include下面将对vector的常用语法作出详细的介绍。目录一、vector初始化1.1一般初始化方式1.2利用迭代器进行初始化1.3利用数组指针进行初始化二、vector的增删查改2.1增添元素-push_b

【C++】STL之list容器的模拟实现

个人主页:🍝在肯德基吃麻辣烫分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处。文章目录前言一、list的三个类的关系分析图vector和list的区别1.节点的成员变量以及构造函数2.list的迭代器二、list的增删查改工作2.1insert()2.2erase()2.3push_back(),pop_back(),push_front(),pop_front()2.4clear()三、list的默认成员函数3.1构造函数2.2拷贝构造2.3析构完整代码总结前言本文章进入C++STL之list的模拟实现。一、list的三个类的关系分析图在STL标准库实现的list中,这个链表是一个==双

【C++】STL——stack和queue使用及模拟实现

🚀作者简介:一名在后端领域学习,并渴望能够学有所成的追梦人。🚁个人主页:不良🔥系列专栏:🛸C++ 🛹Linux📕学习格言:博观而约取,厚积而薄发🌹欢迎进来的小伙伴,如果小伙伴们在学习的过程中,发现有需要纠正的地方,烦请指正,希望能够与诸君一同成长!🌹文章目录认识dequestack简介stack常用接口stack模拟实现queue简介queue常用接口queue模拟实现认识dequedeque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较

c++ - 如何 LRU 缓存大量由 C++ STL 重型结构构成的对象?

我有大型C++/STL数据结构(myStructType),其中包含叠层式列表和映射。我有很多这种类型的对象,我想用一个键进行LRU缓存。我可以在需要时从磁盘重新加载对象。此外,它必须在BSD平台上运行的多处理高性能应用程序中共享。我可以看到几种解决方案:我可以考虑pair的生命周期排序列表加上到o(1)的映射,从其键访问列表中所需对象的索引,我可以使用shm和mmap来存储所有内容,并使用锁来管理访问(参见here)。我可以使用为LRU配置的Redis服务器,并将我的数据结构重新设计为Redis键/值和键/列表对。我可以使用为LRU配置的Redis服务器,并序列化我的数据结构(myS

c++ - 如何 LRU 缓存大量由 C++ STL 重型结构构成的对象?

我有大型C++/STL数据结构(myStructType),其中包含叠层式列表和映射。我有很多这种类型的对象,我想用一个键进行LRU缓存。我可以在需要时从磁盘重新加载对象。此外,它必须在BSD平台上运行的多处理高性能应用程序中共享。我可以看到几种解决方案:我可以考虑pair的生命周期排序列表加上到o(1)的映射,从其键访问列表中所需对象的索引,我可以使用shm和mmap来存储所有内容,并使用锁来管理访问(参见here)。我可以使用为LRU配置的Redis服务器,并将我的数据结构重新设计为Redis键/值和键/列表对。我可以使用为LRU配置的Redis服务器,并序列化我的数据结构(myS

QT STL容器QMap【增、删(两种方式)、改、查、遍历(三种方式)、清除】

QMap【1】UI按钮【2】UI按钮槽函数【3】Qmap输出结果QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快。QMap中的数据都是成对出现的,第一个称为key(键),第二个称value(键值)。QMap是Qt的一个模板类,它是基于红黑树算法的一套字典。QMap是Qt容器类型的一种,它通过(Key,value)存储一对值,并通过Key可以查找与之关联的value的值。QMap的概念和数学中的函数类似,是一种映射对应关系:y=f(x)一个x对应一个y,但是一个y可能还有多个x对应。QMapKey,Value>也是这种关系,不能有重复的Key,