自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (C++) list认识与应用 迭代器 默认成员函数 容量相关函数 内部数据访问与修改 去重 排序 转移

list有push_front,pop_front,push_back,pop_back这些函数,即头插头删,尾插尾删。保留原链表的前目标size个数据,后续的数据将被删除,相应的空间也会被释放。list底层的空间并不连续,所以没有了[ ]的重载,不支持使用下标访问。不同的是并非整个链表,转移的仅是链表x的 i 迭代器位置所对应的节点。参数为目标位置的迭代器,要插入填充的节点数量n,和填充的值val。这些节点的值就是val,可以缺省,调用数据类型的默认构造。由于没有容量的概念。

2024-04-10 17:10:39 903 1

原创 (C++) vector认识与应用 迭代器 默认成员函数 容量函数 [ ]接口 内部数据访问与修改

最后扩容的时候,到底扩容到多少是由编译器决定的,和前面提到的一样,并不一定是开的正好,可能会更大,就像这里。调整对象容量大小,如果目标容量小于原本容量,根据编译环境的不同,可能会缩小容量,或者是什么都不做。用一个迭代器区间来初始化,这个迭代器区间并不局限于vector的迭代器,也可以是其他容器的。如果大于原本容量,就会讲容量扩大至至少目标容量的大小,根据编译环境的不同,可能会更大。对这个位置的迭代器解引用是没有意义的,可能是无效的数据,甚至可能越界。尾插是vector增加数据最常用的,也是最有效率的。

2024-04-06 20:44:37 589 1

原创 (C++) string认识与应用 构造 迭代器 遍历与访问 内部函数

string的产生在数据库之前,并不划分到容器中,规范上来说和其他的容器也有一定差别,最主要的是冗余的代码太多。size()和length()的功能是一样的,无需参数,返回对象中数据的有效长度。find有两个参数,第一个是要寻找的字符或字符串,第二个是开始寻找的位置下标。第二个是要删除的数据个数,或者说字节数。首先,string的成员函数种类繁杂,每个函数都可能有不止一个的重载,插入也是两参数,第一个是目标插入位置下标,第二个是要插入的字符串。capacity()同样无参,返回的是有效数据的最大长度。

2024-03-27 16:40:28 1632

原创 (C++)内存管理:new与delete 异常 定位new

凡是new[]开辟出的空间,都需要通过delete[] 来释放,delete[]中间不需要加数据个数。与new相对,delete也不仅仅是释放空间,在释放空间之前,也会调用该类的析构函数。上面是代替以往的malloc,如果想初始化,也就是达成以往的calloc的功能,在new的后面加上开辟出的空间存放的内容的类型,后面中括号内写数据数量。总之,注意new和delete,new[]和delete[]的配套使用。内存池,简单来说,就是每次向堆申请空间时,会多申请额外的空间,

2024-03-22 15:02:10 2029 1

原创 (C++) 类和对象 (三) 静态成员变量 静态成员函数 友元 匿名对象 内部类

类中的成员变量与成员函数都可以有static前缀。大体与以前一致,只不过是受到了类的域作用限定符与访问限定符的限制,变成了这个类独有的变量与函数,本质上还是属于全局。作为属于全局的变量,当然不能在每个对象中重复定义。所以静态成员变量就是该类的所有对象公有的一个变量。static因为静态成员变量属于整个类,而不是某一个对象,所以静态成员变量是不走初始化列表的,也不能在声明时给缺省值。既然不走初始化列表,那么在哪里定义?答案是类外,一般写在全局。必须在类外定义,此时不需要加static,要在前面加

2024-03-19 14:48:57 852 1

原创 (C++) 类和对象 (二) 默认成员函数 构造 析构 拷贝构造 赋值重载 初始化列表 运算符重载

类和对象第二小节:默认成员函数,初始化列表,运算符重载

2024-03-13 21:50:40 603

原创 (C++) 类和对象 (一) class 访问限定符 this指针 类的大小计算

就像C中一样,分离后,//头文件中class Dateprivate:int _year;int _month;int _day;public:cpp文件中放成员函数的实现。不同的是成员函数的定义要在函数名前面加上::来指明是哪个类。//cpp文件中当然也支持成员函数直接在类内实现。类内定义的函数,相当于前面加了inline,依然是由编译器自己判断是否视为内联。

2024-02-21 19:38:52 772

原创 (C++) 宏的上位替代——内联函数

以inline作为前缀的函数即是内联函数,在编译阶段,会将调用内联函数的代码展开在原位置,继承了宏无需创建栈帧的的优点,提高代码运行的效率。内联函数在调用处会被编译器展开,如果函数代码量大,调用次数多,那就极大的加大了可执行程序的内存大小,这显然不是我们想要的。最适用的情况是,函数本身代码量小,但是调用次数多,为了节省栈帧,选择使用内联函数。于是为了继承宏的优点,改正宏的缺点,C++给出内联函数作为宏的上位替代。最常见的一点,是容易因为“替换”表现的不直观,而引发的错误。看似一样的式子,却有着不同的结果。

2024-02-04 20:12:49 374 1

原创 (C++) 初识引用

C语言中的取地址符 &,在C++中被赋予了一层新的内涵,即为引用。简单来理解,引用就相当于是给一个变量取一个别名。原本的变量名和新的变量名指向共同一块空间,这就意味着双方的修改是同步的。当然,既然两者是相同的,那么类型自然也必须一致。同时,引用不能空引用,引用在定义时必须初始化。int& a;//这样的语句是错误的可见,对b的修改同样也影响a。从地址也可以看出,a与b指向的是同一块空间。

2024-02-01 16:32:50 1475 1

原创 (C语言)二叉树 节点与遍历

由于层数确定的完全二叉树有唯一确定的总节点个数,只要看其与二叉树总节点个数是否相等,就能判断出该二叉树是否是完全二叉树。思路与前序完全一致,只是先走左子树,将打印放在中间,符合左子树,根,右子树的顺序。共k层的完全二叉树总节点个数为2的k次方-1,二叉树的总节点个数前文也涉及过。当你遍历结束该层时,要回到该层的第一个节点,从而继续遍历下一层的第一个节点。要求第k层的节点个数,思路是通过递归左子树与右子树,推进至第k层。前序遍历,即按照根,左子树,右子树的顺序遍历二叉树的每一个节点。

2024-01-28 22:18:38 549

原创 (C语言) 栈和队列

/ 支持动态增长的栈int top;// 栈顶// 容量}Stack;在后续的初始化函数中,如果选择将top初始化为0,那么实际上可以把top当作是size,标示栈中数据的个数。// 每个结点的结构}QNode;// 队列的结构//队列的出口//队列的入口int size;//队列的大小,元素个数}Queue;队列的结构选择使用双指针,分别指向队头和队尾,用于出队列与进队列。

2023-10-21 19:51:33 29 1

原创 (C语言)动态内存管理

静态开辟内存有两个特点:1.空间开辟大小是确定的。2.若是数组,那么需要指定明确数组的长度,不能使用变量。但实际使用中可能会出现需要开辟未知大小空间,或者是需要调节已开辟空间的情况,静态开辟无法满足需求。此时就需要动态内存管理了。

2023-10-10 19:34:56 41 1

原创 (C语言)字符串库函数解析与模拟实现

C语言本身自带许多的库函数,通过包含相应的头文件就可以直接使用。学习如何使用库函数是学习C语言重要的一环,其中最常用的一类当属字符串库函数。接下来介绍最常用的几种字符串库函数以及他们的模拟实现。从三个方面来介绍函数:1.参数2.函数功能3.返回值。

2023-10-05 23:25:38 109

原创 (C语言)扫雷-递归与可调

这是我写的第二个小游戏,前一个:二者都是棋盘格式的小游戏,有很多地方相同,诸如二维数组的运用以及棋盘表格的打印,这里就不多赘述了。为了提升代码的灵活性和可调性,使用自定义常量。9910这样做的好处是可以方便的任意修改棋盘的大小,以及雷的数量。只需在此处修改数字,方便快捷。

2023-10-03 18:43:18 44

原创 (C语言)自定义类型详解,结构体,枚举,联合

介绍了自定义变量类型:结构体,枚举,联合的声明,定义,使用等。

2023-10-02 19:18:31 50 1

原创 (C语言) 三子棋速通N子棋

第二,除了正确输入坐标外,还存在输入的坐标超过棋盘格子范围,或是该格子已经被下过了的情况,需要考虑到。需要注意,在3X3的棋盘上,率先3个棋子连成一线的一方胜利,仅仅是井字棋的玩法;对于行列为ROW与COL的棋盘,一方的棋子在行,列,斜线上连续排列WIN个棋子。逻辑基本一致 ,需要注意的是如果按本文逻辑写胜利判断,那么在行或列的判断结束后,第一,每条“线”(包括横线,竖线,斜线)判断结束后,要将count重新赋值为0;以及,这种胜利判断的方式简单粗暴,也许还有更好更简便的方式,不过我没有想到:(

2023-07-17 21:15:48 60 1

空空如也

空空如也

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

TA关注的人

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