自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++<优先队列>详解,一次吃透

普通的队列具有先进先出的特性,元素追加在队尾,如果删除的话,从队头删除。而在优先队列中,队列中的数据被赋予了优先级;当访问元素时,优先级最高的会先被删除;所以说优先队列是最高级数据先出。优先级队列可以用向量(vector)或双向队列(deque)来实现(注意list容器不能用来实现queue),STL默认使用vector,而且是大堆(less);因为list的迭代器不是任意存取iterator,而pop中用到堆排序时是要求随机存取iterator 的!

2022-09-13 13:00:00 5755 2

原创 C++ string常用函数用法总结

能够将 string 字符串转换为C风格的字符串,并返回该字符串的 const 指针(const char*)-简而言之:将const string*转化为const char*string s(str, str_begin, str_len):将字符串str中从下标str_begin开始、长度为str_len的部分作为字符串初值。string s(cstr, char_len):以C_string类型cstr的前char_len个字符串作为字符串s的初值。运算符">","=","...

2022-08-13 16:00:00 11387 2

原创 C++ vector容器剖析

向量(Vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。

2022-08-01 14:00:00 298

原创 数据在内存如何分布的?

堆的申请过程比较复杂,当系统收到程序的申请时,会遍历记录空闲内存地址的链表,以寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。,以及函数调用时候,栈用来传递参数和返回值。的一块内存区域,例如未初始化的全局变量和局部静态变量(未初始化或初始化为0)。bss是未初始化的全局变量和静态变量,以及初始化为0的全局变量和静态变量。的一块内存区域,例如已初始化的全局变量和局部静态变量(初始化为非0)。用来存放可执行的机器指令的一块内存区域,这部分区域的代码属于只读。.

2022-07-25 14:00:00 387

原创 有关《函数模板》的那些小知识-.-

本文介绍函数模板的概念、用途以及如何创建函数模板和函数模板的使用方法......函数模板定义的一般形式如下:之前我们知道的交换两个变量的方法有宏定义、函数,这两种方式都能实现两个变量的交换,但是各有各的优缺点 -优点: 代码复用,适合所有的类型- 缺点: 缺少类型检查,宏在预处理阶段就被替换掉,编译器并不知道宏的存在- 优点: 真正的函数调用,编译器对类型进行检查- 缺点: 类型不同需要重复定义函数,代码无法复用上边两种方式都各有利弊,

2022-06-25 20:30:00 667 1

原创 想秃头的——类和对象(下)

目录1. 再谈构造函数1.1构造函数体赋值1.2初始化列表1.3 explicit关键字2. static成员2.1 概念:2.2 特性:2.3 问题: 3. 友元1.分类:2.友元函数:3.友元类:4.友元的特点:问题:在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值 虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的初始化,构造数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。 格式:以一个

2022-06-17 14:00:00 410 17

原创 简单易懂---类和对象(中)

类的6个默认成员函数 构造函数、拷贝构造函数、析构函数、赋值操作符重载、取地址操作符重载、const修饰的取地址操作符重载 构造函数    特殊的成员函数,在创建对象时,由编译器自动来调用,并且在对象的生命周期内只调一次,来完成对象的构造以及初始化。 特性: <span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#f4f4f4"><span style="bac....

2022-05-31 14:00:00 121 1

原创 细品——类和对象(上)

一、类与对象的初步认识1.类是对象的抽象,而对象是类的具体实例。 类是抽象的,不占用内存;而对象是具体的,占用存储空间。2.面向过程与面向对象C语言是面向过程的,关注的是过程中的数据与方法。C++是面向对象的,关注的是对象’的属性与功能。二、类1.在C++中,结构体内不仅可以定义变量,也可以定义函数。 struct student { char _name[20]; int _age; void SetStudentInfo.

2022-05-21 23:30:00 347 7

原创 关于&(引用)的你可能不清楚那些用法

目录C++中的引用:引用的特点:一、引用的基础概念二、引用作参数:1.【值传递】2.【引用传递】3.【指针传递】三、引用的使用1、常变引用2、引用变量作为函数参数3、引用变量作为函数的返回值* 引用和指针的区别和联系(笔试热点)C++中的引用:引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量..

2022-05-12 16:00:00 1730 5

原创 详解——八大排序(十分钟带你吃透)

目录0. 前言1. 插入排序​2. 希尔排序3. 冒泡排序4. 1快速排序(hoare版本)4. 2快速排序(挖坑法)4. 3快速排序(前后指针法)4.4快速排序(非递归法)5. 选择排序6. 堆排序7. 1 归并排序(递归实现)7. 2归并排序(非递归实现)8. 计数排序9.八大排序时间复杂度0. 前言众所周知,对于顺序表,以二分法查找一个数,算法时间复杂度为O(nlongn)。因而,一次排好序,便可以节约很多查找的时间。..

2022-04-28 10:00:00 1647 7

原创 浅谈——堆(数据结构)

一、堆的性质堆是一种特殊的树。只要满足以下两点,它就是一个堆:堆是一个完全二叉树;堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。第一点,堆必须是一个完全二叉树。完全二叉树要求,除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列,自然堆也具有完全二叉树的所有性质。第二点,堆中的每个节点的值必须大于等于(或者小于等于)其子树中每个节点的值。实际上,我们还可以换一种说法,堆中每个节点的值都大于等于(或者小于等于)其左右子节点的值。这两种表述是等价的。对于每

2022-04-10 20:33:26 4910 13

原创 老头环三周目通关的我太无聊了来写个队列(数据结构)

队列,和栈一样,也是一种对数据的"存"和"取"有严格要求的线性存储结构。与栈结构不同的是,队列的两端都"开口",要求数据只能从一端进,从另一端出,如图 1 所示:图 1 队列存储结构通常,称进数据的一端为 "队尾",出数据的一端为 "队头",数据元素进队列的过程称为 "入队",出队列的过程称为 "出队"。不仅如此,队列中数据的进出要遵循 "先进先出" 的原则,即最先进队列的数据元素,同样要最先出队列。拿图 1 中的队列来说,从数据在队列中的存储状态可以分析出,元素 1 最先进队,其.

2022-04-08 21:00:00 866 3

原创 一分钟带你了解树的性质(数据结构)

目录树的基本概念有序树无序树森林二叉树的特点二叉树的性质满二叉树(特殊的完全二叉树)完全二叉树结点数、度数、高度之间的关系(1)n=总度数和(分支数)+1=n0+n1+n2+~~(2)度数为m的树上第i层最多有m^(i-1)个结点(3)具有n个结点的m叉树的最小高度为logm[n*(m-1)+1](4) 具有n个结点的m叉树的最大高度为n-m+1树的基本概念节点的度: 子树的个数树的度: 所有节点度中的最大值叶..

2022-04-03 10:41:09 3303 13

原创 (数据结构)上厕所的时间就能看懂单链表和顺序表

目录顺序表单链表顺序表 单链表顺序表类似于数组,元素都是相邻的,这也决定了它比较容易和比较适合查询。但缺点就是长度有限。时间复杂度查询操作 O(1) 插入和删除操作 O(n)代码实现#pragma once#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef int SLDateType;typedef struct SeqList{

2022-03-30 21:00:00 90 9

原创 详解栈和队列(链栈)

链栈,即用链表实现栈存储结构。链栈的实现思路同顺序栈类似,顺序栈是将顺序表(数组)的一端作为栈底,另一端为栈顶;链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈底,如图 1 )所示:​图 1 链栈示意图将链表头部作为栈顶的一端,可以避免在实现数据 "入栈" 和 "出栈" 操作时做大量遍历链表的耗时操作。链表的头部作为栈顶,意味着:在实现数据"入栈"操作时,需要将...

2022-03-27 21:17:28 543 17

原创 详解栈和队列(顺序栈)

同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的链式存储结构,如图 1 所示。图 1 栈存储结构示意图从图 1 我们看到,栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 "存" 和 "取" 的过程有特殊的要求:栈只能从表的一端存取数据,另一端是封闭的,如图 1 所示; 在栈中,无论是存数据还是取数据,都必须遵循"先进后出"的原则,即最先进栈的元素最后出栈。拿图 1 的栈来说,从图中数据的存储状态可判断出,元素 1 是最先进的栈。因此,当需要从栈中取出元素 .

2022-03-27 21:05:31 1191 8

原创 动态内存的管理

前言:  通常我们使用数组的时候:必须提前用一个常量来指定数组的长度,同时它的内存空间在编译的时候就已经被分配了。但是有时候数组的长度只有在运行的时候才能知道。因此,一种简单的解决方案就是提前申请一块较大的数组,可以容纳可能出现的最多的元素;  使用这种放的的优点就是非常简单;但是也存在很大的缺点:1、人为因素太大,如果元素数量超过声明的长度,就会发生数组越界,避免的方法就是在声明大一点,很浪费内存;2、如果实际使用的元素比较少的话,就会有大量的内存被浪费掉...

2022-03-20 13:00:00 842 1

原创 模拟实现常用库函数

①strlen(字符串长度)size_t strlen (const char* str);strlen以'\0'为结束标志函数返回的是在'\0'前面出现的字符的个数函数的返回类型是size_t(无符号整形)//计数器方式int my_strlen(const char* str){ int count = 0; assert(str != NULL); while(*str++ != '\0') { count++;...

2022-03-01 13:30:00 86 1

原创 动态内存分配

动态内存是相对静态内存而言的。所谓动态和静态就是指内存的分配方式。动态内存是指在堆上分配的内存,而静态内存是指在栈上分配的内存。前面所写的程序大多数都是在栈上分配的,比如局部变量、形参、函数调用等。栈上分配的内存是由系统分配和释放的,空间有限,在复合语句或函数运行结束后就会被系统自动释放。而堆上分配的内存是由程序员通过编程自己手动分配和释放的,空间很大,存储自由。堆和栈后面还会专门讲,这里先了解一下。传统数组的缺点“传统数组”就是前面所使用的数组,与动态内存分配相比,传统数组主要有以下几个缺点:.

2021-12-20 20:00:00 1052 12

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

一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。其操作方式类似于数据结构中的栈。(内存分配时,与堆相向而生,因此申请内存是有限的,运用不当,会出现栈溢出)2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。分配方式类似于链表。3、全局区(静态区)(static)—存放全局变量、静态数据、常量。程序结束后由系统释放。4、文字常量区 —

2021-12-11 21:00:00 1906 13

原创 C语言汉诺塔问题详解

目录思路: 当n=1时: 当n=2时: 当n=3时: 当n=4时: 见代码 运行截图 总结 汉诺塔的游戏规则:有三根金刚石柱子A、B、C,在A柱子上从下往上按照大小依次减小的顺序摞着64片黄金环。大梵天命令婆罗门把环从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在任何一个柱子上,小环上不能放大环,在三根柱子之间一次只能移动一个环。即将A柱子上全部的环通过C柱子(C柱子作为中介)移动到B柱子上当A只有一个环的时候:A->B.

2021-11-29 17:00:00 4976 6

原创 c语言小游戏——扫雷

c语言小游戏

2021-11-24 11:38:18 244 4

原创 C语言小游戏——井字棋

前言:在我们小时候经常上课开小差,与同桌下“井字棋”---也叫“三子棋”,想不想在vs上重温小时候的快乐,往下看看吧!目录完整代码今天要完成一个相对于之前学习更有挑战性的小程序——三子棋。相信我们大部分人都接触过三子棋,这是一款操作简单易上手的小游戏。先简单介绍一下三子棋的规则,方便我们接下来的编程和理解。规则如下:在九宫格棋盘上,只要将自己的三个棋子走成一条线(横、竖、对角线),对方就算输了。规则很简单,但是我们应该从哪里入手完成这个三子棋程序呢?首先..

2021-11-11 21:19:12 2216 4

原创 结构体的食用方法(struct)

系列文章目录struct的概念与应用、定义等文章目录系列文章目录 前言 一、struct的概念 二、struct的应用 1.语法 2.读入数据 3. 前言在实际问题中,一组数据往往具有不同的数据类型。为了解决这个问题,c语言中给出了另一种构造数据的类型——“结构”。他相当于其他高级语言中的记录。一、struct的概念是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。 是一种复合数...

2021-10-26 20:53:42 967 10

原创 迈向大厂拿offer

大家好,感谢大家观看我的博客,我是大一新生,来自一所普通高校自从我接触到编程之时,就对编程产生了浓厚的兴趣,我想学习编程,我想有所作为这条道路必定艰辛且漫长,需要大家不忘初心,努力奋斗,才能达到自己想要的结果目录学习目标:1学习方法:2学习时间:3学习目标:加入腾讯,百度,字节跳动等大厂,拿到好offer,在更好的环境提升自己的编程能力学习方法:结合书与老师所讲,磨炼自己不懂的方面,如果自己穷尽山水也想不出,再去询问欲戴王冠,必承其重学习时间:...

2021-10-16 10:42:40 270 6

空空如也

空空如也

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

TA关注的人

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