草庐IT

stl-algorithm

全部标签

【C++】深入浅出STL之string类

文章篇幅较长,越7万余字,建议电脑端访问文章目录一、前言1、C语言中的字符串2、string类的使用场景二、初步认识string类1、概述2、常用接口细述1)string类对象的默认成员函数2)string类对象的常见容量操作①size、length、capacity②maxsize③clear④empty⑤reserve⑥resize⑦shrink_to_fit3)string类对象的访问及遍历操作①operator[]②at③迭代器④范围for⑤front和back4)string类对象的修改操作①push_back②append③operator+=(string)④insert⑤ass

【C++ STL容器】:vector存放数据以及存放自定义的数据类型

前言时不可以苟遇,道不可以虚行。STL中最常用的容器为:vector,暂且把它理解为我们之前学过的数组Array。一、创建一个vector容器(数组)添加头文件:#include vectorint>v;二、向容器中插入数据利用内置函数:push_back() v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);三、通过迭代器访问容器中的数据1、利用起始和结束两个迭代器先声明两个迭代器,一个指向容器中的第一元素,一个指向容器中的最后一个元素的下一个位置然后利用一层while循环,依次遍历容器中的元素。 vectorin

【C++】STL使用仿函数控制优先级队列priority_queue

文章目录前言一、priority_queue的底层实现二、使用仿函数控制priority_queue的底层总结前言本文章讲解C++STL的容器适配器:priority_queue的实现,并实现仿函数控制priority_queue底层。一、priority_queue的底层实现priority_queue叫做优先级队列,它的底层结构是堆,在库中,默认生成的是大堆在库的实现中,使用vector作为该优先级队列的适配容器。由于priority_queue也是一个适配器,所以它的接口函数也可以对其他容器的函数进行封装使用。下面来对priority_queue进行模拟实现。#pragmaonce//优

【C++】STL之容器适配器——使用deque适配stack和queue

个人主页:🍝在肯德基吃麻辣烫分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处。文章目录前言一、什么是容器适配器?二、stack的基本函数和模拟实现三、queue的基本函数和模拟实现四、deque4.1deque的底层结构4.2使用deque适配stack和queue的原因总结前言本文章主要介绍容器适配器的功能,以及一个适配的场景。一、什么是容器适配器?容器适配器,按字面意思理解的话,就是用来对一个容器进行匹配的。在C++STL中,容器有:vector,list,deque,map,set等。而在C++STL中不把stack和queue纳入容器的范围而是纳入容器适配器的范围是因为:stack

【C++】STL之vector功能及模拟实现

目录前沿一、vector的使用 1、vector构造函数的声明 2、vector迭代器的使用 3、vector空间增长问题 4、vector的增删查改二、vector的模拟实现 1、vector的成员变量 2、迭代器 3、容量相关(resize,reserve) 4、数据访问相关 5、插入删除 5.1任意位置插入 5.2任意位置删除 5.3尾插 5.4尾删 6、析构函数 7、交换函数 8、构造函数 8.1无参构造 8.2实参构造 8.3迭代器区间构造 8.4实参构造的特例化 8.5拷贝构造 9、赋值运算符重载三、vector迭代器失效问题(重点) 1、会引起其底层空间改变的操作,都有可能是迭代

C++初阶之模板和STL简介

模板和STL简介1.泛型编程2.函数模板2.1函数模板概念2.1函数模板格式2.3函数模板的原理2.4函数模板的实例化2.5模板参数的匹配原则3.类模板3.1类模板的定义格式3.2类模板的实例化4.什么是STL5.STL的版本6.STL的六大组件7.STL的重要性8.如何更好地学习STL9.STL的缺陷结语1.泛型编程泛型编程是一种编程范式,旨在实现可重用、通用和高度抽象的代码。它允许程序员编写与数据类型无关的代码,以便在不同的数据类型上进行操作,而无需为每种数据类型重复编写代码。在传统的编程中,通常需要为每种数据类型编写特定的代码。例如,如果要实现一个排序算法,可能需要为整数、浮点数和字符串

Data Structure, Algorithm,and Applications in C++

在学习这本书进阶内容之前,我们可以跟着它的第一章部分再巩固和复习。本书由SartajSahni撰写,由王立柱和刘志红翻译。全书通俗易懂,内容丰富,是巩固C++内容的不二选择。希望本文对各位有所帮助。目录1.函数与参数1.1.传值参数1.2.模板函数1.3.引用参数1.4.常量引用参数1.5.返回值1.6.重载函数1.7.练习2.异常2.1.抛出异常2.2.处理异常2.3.练习3.动态内存空间分配3.1.操作符new3.2.一维数组3.3.异常处理3.4.操作符delete3.5.二维数组4.自有数据类型4.1.类currency4.2.一种不同的描述方法4.3.操作符重载4.4.友元和保护性类

【STL】模拟实现简易 list

目录1.读源码2.框架搭建 3.list的迭代器4.list的拷贝构造与赋值重载拷贝构造赋值重载5.list的常见重要接口实现operator--() insert接口erase接口push_back接口push_front 接口pop_back接口pop_front接口size接口clear接口别忘了析构函数源码分享写在最后:1.读源码读源码千万不能一行一行读啊,不然你就看晕在那里了,我们先从核心框架开始抓取,比如说先找到list在哪: 然后老规矩,我们先找他的成员变量:那我们就来找找这个link_type是什么:link_type是list_node*,list_node是一个类类型,那我

【STL】list的模拟实现

 放在专栏【C++知识总结】,会持续更新,期待支持1、list数据结构list是一个带有头节点的双向链表,list主要是由以下部分组成:list节点类、迭代器类、list本身1.1、list节点类关于list节点类,由于list本身是一个双向的链表,所以节点内必须包含指向前一个节点的指针、指向后一个节点的指针、用来存储数据的data。同时我们只需给该类一个构造即可,因为对于节点的析构,我们交给list本身这个类来实现即可。如下所示,为list的节点设计:1.2、迭代器类list不能像vector那样以一个原生指针作为迭代器,这是因为list中各个节点并不是连续的,但是list中的迭代器必须要能

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

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