自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 C++:map容器

C++ STL中的map是一种基于红黑树实现的关联容器,用于存储键值对。其核心特性包括:键唯一且自动排序、O(logn)时间复杂度的查找/插入/删除操作。map支持多种插入方式(insert、[]运算符),提供find()、count()等查找方法,以及erase()删除方法。可通过迭代器有序遍历元素,并支持自定义键类型和排序规则。与unordered_map相比,map保持元素有序但查找效率稍低。使用时需注意键不可直接修改、[]访问会创建默认值等特性。map适用于需要有序键值对管理的场景。

2025-09-12 12:44:50 1001

原创 C++:set容器

C++ STL中的set是一种关联容器,具有元素唯一性和自动排序特性。底层基于红黑树实现,保证O(logn)的插入、删除和查找效率。主要功能包括:插入元素(insert)、删除元素(erase)、查找元素(find/count)等。支持自定义排序规则,可通过函数对象或lambda表达式实现。与multiset的区别在于不允许重复元素。使用时需注意:元素为常量不可修改,删除操作会使对应迭代器失效。适用于需要快速查找、去重和排序的场景,但不适合频繁随机访问。

2025-09-12 09:30:00 535

原创 C++:list容器

摘要:C++ STL中的std::list是一种基于双向链表结构的容器,其核心优势在于任意位置的O(1)时间复杂度插入/删除操作。每个节点包含数据域和前后指针,确保操作高效但牺牲了随机访问能力。list提供丰富的成员函数如push_front/push_back、splice合并等,特别适合频繁修改元素位置的场景。相比vector和deque,list在迭代器稳定性和插入删除性能上更优,但内存开销更大且缓存不友好。开发者应根据实际需求(频繁修改vs快速访问)合理选择容器类型。

2025-09-11 10:37:11 1052

原创 C++:queue适配器

C++ STL中的queue是一种遵循先进先出(FIFO)原则的容器适配器,基于底层容器(默认deque)实现。它仅支持队头/队尾操作,不提供迭代器遍历功能。核心接口包括push(入队)、pop(出队)、front(访问队头)和back(访问队尾)。使用时需注意空队列操作的安全性,且底层容器可选择deque或list。queue适用于任务调度、消息队列、BFS算法等需要严格按顺序处理的场景。作为容器适配器,queue通过限制访问方式保证了FIFO逻辑的严谨性。

2025-09-11 10:30:00 636

原创 C++:stack适配器

摘要:C++ STL中的stack是一种LIFO(后进先出)容器适配器,基于deque、vector或list等底层容器实现。它仅提供栈的核心操作接口(push、pop、top等),不支持迭代器遍历。stack默认使用deque作为底层容器,但可指定其他满足要求的容器。典型应用包括括号匹配、函数调用栈和DFS等。使用时需注意空栈操作和底层容器选择,其设计严格遵循LIFO原则,通过封装底层容器提供安全简洁的栈操作。

2025-09-10 15:27:26 564

原创 C++:deque容器

C++中的deque(双端队列)是一种支持高效双端操作和随机访问的容器。它采用分段连续存储结构,通过中控器管理多个固定大小的缓冲区,既支持O(1)时间复杂度的首尾插入删除操作,又具备类似vector的随机访问能力。相比vector,deque在头部操作和动态扩容方面性能更优;相比list,它提供了更高效的随机访问。deque适用于需要频繁首尾操作且同时要求随机访问的场景,如实现队列、滑动窗口算法等。使用时需注意迭代器失效和内存碎片问题,但其平衡的性能使其成为特定场景下的理想选择。

2025-09-10 15:09:56 1249

原创 C++:智能指针

C++智能指针是STL提供的自动内存管理工具,基于RAII机制避免内存泄漏和悬挂指针等问题。主要包含三种类型:unique_ptr(独占所有权,不可复制只能移动)、shared_ptr(共享所有权,通过引用计数管理)和weak_ptr(弱引用,解决循环引用)。使用时应优先选择make_unique/make_shared创建,避免直接操作原始指针。智能指针能显著提升代码安全性,其中unique_ptr适用于独占资源,shared_ptr用于共享资源,weak_ptr则辅助解决循环引用问题,是C++内存管理的

2025-08-30 17:18:46 732

原创 C++:vector容器

需确保自定义类有默认构造函数(

2025-08-29 22:00:04 623

原创 Python基础:PyMySQL

PyMySQL是Python连接MySQL数据库的常用第三方库,实现Python与MySQL的数据交互。核心流程包括:建立连接、获取游标、执行SQL、处理结果和关闭资源。使用时需注意防止SQL注入(使用参数化查询)、处理事务(手动提交/回滚)、设置正确编码(推荐utf8mb4)。相比其他MySQL驱动,PyMySQL纯Python实现、支持Python3、安装简单,是当前主流选择。该库适用于Web开发、数据分析等多种场景,通过连接池可优化性能。

2025-08-27 09:33:50 624

原创 Python基础:推导式

推导式类型语法符号特点 / 用途示例输出列表推导式[]创建列表,适合中小规模数据[1, 4, 9]字典推导式{}创建字典,处理键值对映射{1:1, 2:4}集合推导式{}创建集合,自动去重{1, 4, 9}生成器推导式()创建生成器,惰性计算,适合大数据生成器对象(迭代输出)合理使用推导式能让代码更 Pythonic,但需平衡简洁性与可读性,避免过度复杂化。

2025-08-22 10:25:02 583

原创 Python基础:深浅拷贝

Python中的深浅拷贝在处理可变对象时有重要区别。浅拷贝仅复制外层对象,而嵌套的可变元素仍为原对象的引用,适用于简单对象;深拷贝会递归复制所有层级(包括嵌套元素),实现完全独立,适合复杂嵌套对象。关键区别在于:浅拷贝下嵌套可变元素的修改会相互影响,而深拷贝则完全隔离。不可变对象的拷贝无实际意义,因它们无法修改。应用时需根据数据结构选择:无嵌套或嵌套不可变元素用浅拷贝,含嵌套可变元素且需隔离时用深拷贝,但要注意深拷贝的性能开销。

2025-08-22 10:05:10 889

原创 Python基础:内置数据结构

1、定义列表users = ["Alice", "Bob", 10086, True] # 混合类型元素核心特性对比特性列表(List)字典(Dict)集合(Set)元组(Tuple)定义语法[元素1, 元素2, ...]{键1:值1, 键2:值2, ...}{元素1, 元素2, ...}(元素1, 元素2, ...)可变性可变(可增删改元素)可变(可增删改键值对)可变(可增删元素)不可变(创建后无法修改)有序性有序(按插入顺序存储)无序(3.7 + 伪有序,非官方保证)

2025-08-21 18:30:25 891

原创 整数之间的赋值问题

是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。

2024-06-01 15:16:37 1232 2

原创 一锅排序之第二碗——选择排序

1、基本思想每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。(1)在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素(2)若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换(3)在剩余的array[i]--array[n-2](array[i+1]--array[n-1])集合中,重复上述步骤,直到集合剩余1个元素2、实现void Sele.

2022-05-08 18:13:53 682 46

原创 一锅排序之第一碗——插入排序

直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。其实在生活中,我们身边有很多的类似直接插入排序的例子,比如,玩扑克的时候,我们就采用了直接插入的方法,我们摸牌的时候是一张一张的摸,每摸一张就会在原来有序的基础上把它插入到相应的位置,继续保持有序。...

2022-05-02 11:10:28 969 70

原创 栈和队列讲解

目录1、栈(1)栈的概念及结构(2)栈的实现2、队列(1)队列的概念及结构(2)队列的实现前言:栈和队列是在顺序表和链表的延伸,如果前面的顺序表和链表你已经掌握了的话,栈和队列对你来说应该就是小菜一碟了。1、栈(1)栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈..

2022-04-05 14:48:18 2535 102

原创 链表OJ(下)

前言:上次链表OJ开了个素,这次直接上荤菜,让你回味无穷!1、链表分割链接:牛客:链表分割题目:题解:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Partition {public: ListNode* partition(ListNode* pHead, int x) {

2022-03-26 23:14:01 1443 63

原创 链表OJ(上)

前言:上次学习了单链表的增删查改,这次我们就先拿几道OJ题来试试手。1、移除链表元素https://leetcode-cn.com/problems/remove-linked-list-elements/description/

2022-03-24 17:51:26 2657 48

原创 数据结构---单链表

前言:单链表是后面要学的双链表以及循环链表的基础,要想继续深入了解数据结构以及C++,我们就要奠定好这块基石!接下来就和我一起学习吧!这里我们来简单实现单链表的增删查找。头文件...

2022-03-20 11:16:46 2382 69

原创 指针数组进阶

前言:指针与数组的知识往往让我们无法给自己定位,似乎是懂了,但真的碰上了又一言难尽。接下来有一些关于指针与数组的知识和例题讲解,来看看你对指针和数组到底有多了解吧!指针与数组中的sizeof与strlen1、sizeofsizeof值关注占用空间的大小,单位是字节,不关注元素的类型,是一个操作符。2、strlenstrlen是计算字符串中\0之前出现了多少个字符,只针对字符串,是一个库函数。3、数组名数组名是数组首元素地址,但是在这里有两个例外:(1)sizeof(数组名)

2022-01-21 14:11:06 3404 83

原创 深度剖析浮点数在内存中的存储

前言:我们在码代码的时候,经常遇到过以整数形式存入,浮点数形式输出;或者浮点数形式存入整数形式输出。输出的结果往往让人意想不到,那么,为什么会发生这样的变化,又是什么导致发生变化,接下来,就让我们从存储内部结构出发,带你深度解刨!我们以一个例子来说明一切#include<stdio.h>int main(){ int n = 9; float *pFloat = (float *)&n; printf("n的值为:%d\n",n); pri

2022-01-11 12:51:20 1325 42

原创 操作符详解,带你独领风骚(下篇)

1.单目操作符之前有了解到的三目操作符(?:),指的是有三个操作数例如:3+5其中,+是一个操作符3是左操作数5是有操作数+则是一个双目操作符那么什么是单目操作符呢,也就是只有一个操作数的我们常见的操作符有:这里我们来详细介绍一下sizeof、~、++与--1.sizeofsizeof常用来计算类型的长度,比如数组类型,int、char、short等等。同时,sizeof是操作符,不是函数,所以后面的括号可以省略。但算类型长度的时候不能省,这是语法要求。.

2021-12-01 08:20:00 1653 40

原创 操作符详解,带你独领风骚(上篇)

前言:在我们程序编写领域,操作符给我们提供了很多的运算便利,但操作符琳琅满目,我们要怎样用好它们呢,下面就带你来熟悉熟悉这些多样的操作符。操作符分类:算术操作符 、移位操作符 、位操作符 、赋值操作符 、单目操作符 、关系操作符 、逻辑操作符 、条件操作符 、逗号表达式 、下标引用、函数调用和结构成员1.算数操作符(+、--、*、%、/)这里我们着重讲一下取余(模)%操作符和除法/操作符#include<stdio.h>int main(){ //取余(模..

2021-11-22 22:34:25 535 33

原创 C语言实现简易版扫雷

前言:相信我们小时候都玩过扫雷,那么,作为码字人,我们应该有着自己实现扫雷的能力,接下来就用C语言来实现简易版扫雷。目录1.创建主函数、头文件2.构建test函数3.实现game函数4.创建数组5.初始化棋盘6.布置雷7.打印棋盘8.排雷9.计算周围的雷首先,来介绍一下扫雷构造 这是扫雷的9乘9棋盘,每点开一个格子就会显示这个格子周围雷的数目,当踩中雷的时候会显示“被炸死”。如果是点开中间的格子,算出它周围...

2021-11-19 21:17:07 1378 41

原创 带你玩转三子棋

前言:所谓简易三子棋就是你和电脑下棋,当你和电脑其中有一方在棋盘中出现三行、三列或两条对角线有三个棋时,则那一方赢,接下来,就让我带你简单地操作一番。1.设计主函数int main(){ test(); return 0;}我们所有的操作将会在test()函数中进行。2.设计test函数void test(){ int input = 0; int srand = ((unsigned)time(NULL));//初始化随机数 do { menu();//

2021-11-16 21:54:47 5608 10

原创 学习C语言要的不仅仅只是学习

前言:每个人都会有自己比较迷茫的时候,但过了迷茫期就是曙光,所以一定要相信自己。a.自我介绍我是一个来自二本院校物联网专业的学生,现在已读大二,大一刚进来,对我们这个专业一点也不了解,后面到大一下学期,开始逐渐对我们专业有了一定的认识,现在开始,为时不晚。b.目标在新的开始中,找到自己的方向,从零开始,到达一百。c.学习方式我是一个比较不怎么爱看书的人,更偏向于听,从听别人的讲解中重新审视知识,所以我更喜欢在网站上找一些学习视频,配合书籍一起学习,这样可以让我更容易理解与记

2021-10-16 15:00:24 237

原创 反向输出四位数(最简)

题目描述:将一个四位数反向输出输入描述:一行,输入一个整数n(1000<=n<=9999)输出描述:针对每组输入,反向输出对应的四位数代码实现#include<stdio.h>int main(){ int n = 0; scanf("%d", &n);//输入一个数 while (n)//直到n=0跳出循环 { printf("%d", n % 10);//n取余后得到最后一位数,输出这个数 n=n / 10;//去掉n最后一位数.

2021-10-05 11:05:47 635

原创 输入一个十进制数,以八进制、十六进制的形式输出

题目要求:将输出十进制整数1234对应的八进制、十六进制数。输入描述:无输出描述:十进制数1234对应的八进制和十六进制(字母大写),用空格分开,并且要求,在八进制前显示先导0,在十六进制数前显示先导0X#include<stdio.h>int main(){ printf("%#o,%#X\n", 1234,1234);//直接在printf中进行格式控制 return 0;}结果输出:代码描述:1.格式输出这里直接在pri..

2021-10-05 10:37:14 7092 8

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除