- 博客(30)
- 收藏
- 关注
原创 c++class类
那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。在上面的定义示例中我们只是定义了这个类的一些属性和方法声明, 并没有去实现它, 类的实现就是完成其方法的过程。学生类可以看做是基类的一个扩展, 因为他具有基类的所有属性和行为, 并且在此基础上增加了一些基类所没有的属性和行为, 像"学生"这样的类称为"人类"这个基类的"欢迎初学和进阶中的小伙伴。
2023-08-28 11:26:37 483
原创 C++原码、反码、补码
一. 机器数和机器数的真值在学习原码,反码和补码之前, 需要先了解和的概念。一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用机器数的存放符号,正数为0,负数为1。比如,十进制中的数 +3 ,,转换成二进制就是0000 0011。如果是 -3 ,就是 100 00011。那么,这里的 0000 0011 和 1000 0011 就是机器数。因为第一位是符号位,所以机器数的形式值就不等于真正的数值。
2023-08-28 11:21:24 442 4
原创 c++ vector
请记住,向量会自动管理内存,根据需要调整大小。然而,频繁的调整大小可能会导致性能开销,因此在性能关键的情况下要谨慎考虑。是一种动态数组,相比传统数组提供了更多的灵活性和易用性。)的一部分,需要包含。
2023-08-15 15:28:12 52
原创 c++位运算
我们知道,计算机中的数在内存中都是以二进制形式进行存储的 ,而位运算就是直接对整数在内存中的二进制位进行操作,因此其执行效率非常高,在程序中尽量使用位运算进行操作,这会大大提高程序的性能。那么,涉及位运算的运算符如下表所示:符号描述运算规则实例(以四位二进制数为例)与把两个数转成二进制,两个二进制数的每一位都进行逻辑与操作,得出的结果转换为十进制。或把两个数转成二进制,两个二进制数的每一位都进行逻辑或操作,得出的结果转换为十进制。异。
2023-08-14 21:19:17 77
原创 c++最小生成树
问题是在一个中求一棵树T,使得这棵树拥有图G中的,且所有边都是来自图G中的边,并且满足。两种经典的算法是和核心在于,每次将还不在图中的,和图距离最小的点加到图里,直到所有点都被加到图中或所有边都已经用完退出。这里可以看到和dijkstra算法很相似,区别在于最短路算法是有确定的起点的,每次加的是到这个起点距离最小的点,Prim加的是到当前已经构造好的最小生成树距离最小的点。(在这两个算法中我们很容易想到的数据结构是优先队列,因为这是一个动态变化的图)
2023-08-14 20:26:54 91
原创 c++集合
当set集合中的元素为结构体时,该结构体必须实现运算符‘<’的重载,因为他要排序。max_size() 返回set容器可能包含的元素最大个数。begin() 返回set容器的第一个元素的地址。end() 返回set容器的最后一个元素地址。size() 返回当前set容器中的元素个数。clear() 删除set容器中的所有的元素。可以看到结果是按照年龄由小到大的顺序排列。姓名:王二麻子 年龄:10。姓名:李四 年龄:16。姓名:张三 年龄:14。
2023-08-14 10:17:32 89
原创 c++贪心算法
贪心算法通过每一步的局部最优选择,试图达到整体问题的最优解。尽管贪心算法不能保证在所有问题上获得最优解,但它在某些问题上能够高效地找到最优或近似最优解。通过选择策略、验证和分析问题的性质,贪心算法可以在某些问题上找到有效的解决方案。该算法的核心思想是,每一步都选择局部最优解,以期望达到全局最优解。:给定一系列活动,每个活动有一个开始时间和结束时间,目标是选择出不相交的活动集合,使得能参加的活动数量最多。贪心选择性质是指,在每一步选择中,都采取当前局部最优的选择。这种方法在这种情况下能够得到最优解。
2023-08-13 09:15:06 78
原创 c++动态规划算法
(Dynamic Programming,简称DP),是一种通过把分解为相对简单的的方式求解的方法,可以有效的解决等求最优解策略问题。
2023-08-13 08:47:18 135
原创 c++图形结构
它从图中某个顶点v出发,访问此顶点,然后从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v 有路径相通的顶点都被访问到。如果说图的深度优先遍历类似树的前序遍历, 那么图的广度优先遍历就类似于树的层序遍历了。
2023-08-12 20:03:55 194
原创 c++树形结构
首先直接给出二叉树的递归定义① 要么二叉树没有根结点,是一棵空树。② 要么二叉树由根结点、左子树、右子树组成,且左子树和右子树都是二叉树。那么,什么是递归定义呢?其实递归定义就是用自身来定义自身。例如之前反复提及的斐波那契数列,它的定义为F[n]=F[n-1]+F[n-2],这里其实就是递归定义,即用自身序列的元素(F[n-1] 与F[n-2])来定义这个序列本身(即 F[n])。
2023-08-12 19:21:27 382
原创 c++迭代器
迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。end 成员函数返回的不是指向最后一个元素的迭代器,而是指向最后一个元素后面的位置的迭代器,因此循环的终止条件是。容器的迭代器的功能强弱,决定了该容器是否支持 STL 中的某种算法。例如,排序算法需要通过随机访问迭代器来访问容器中的元素,因此有的容器就不支持排序算法。如果迭代器指向了容器中最后一个元素的后面或第一个元素的前面,再通过该迭代器访问元素,就有可能导致程序崩溃,这和访问 NULL 或未初始化的指针指向的地方类似。
2023-08-11 22:05:47 93
原创 c++二分算法
答案属于一个区间,当这个区间很大时,暴力超时。但重要的是——这个区间是对题目中的某个量有单调性的,此时,我们就会二分答案。每一次二分会做一次判断,看是否对应的那个量达到了需要的大小。判断:根据题意写个check函数,如果满足check,就放弃右半区间(或左半区间),如果不满足,就放弃左半区间(或右半区间),一直往复,直至到最终的答案。如何判断一个题是不是用二分答案做的呢?典型特征:求...最大值的最小 、 求...最小值的最大。
2023-08-11 19:03:12 84 1
原创 c++链表
看有个人写的很好,就是说你现在有一个小纸条,上面写着一个抽屉的地址,那个抽屉里有一些你需要的东西,和一个新的写着地址的小纸条,这个小纸条又指向了一个新的抽屉,大体可以这么理解。先生成正常顺序链表,再从最后n个节点中随机选择一个,将其剔除并插入到第一个节点的位置,然后再从最后n-1个节点中随机选择一个,剔除后插入第二个节点位置,以此类推。在自学C++的时候,看到好多人都在提链表,于是就自学了一下,看了很多别人的文章,加入了一些自己的理解,做了一下总结,因为是初学可能会有些问题,希望大家能指正。
2023-08-11 18:35:29 327 1
原创 c++队列
队列是一种类型的容器的适配器,FIFO(先进先出),其中元素被插入到所述容器的一端,并从其另一端进行提取操作。队列被实现为容器的适配器,其是使用特定容器类封装到对象内部,作为其底层的容器类,提供了一个特定的一组成员函数来访问它的元素。元素被压入到所指定容器的“后面”,并从其“前”弹出。底层容器可以是标准容器类模板或一些其它专门设计的容器类中的一个。标准库容器中的deque和list满足上面的要求。对于没有指定容器的queue实例,默认情况下使用标准库容器deque。
2023-08-11 18:05:33 96 1
原创 c++ 栈
开头我们就已经提过了,栈实际上就是一种线性表的特例,所以栈的实现和线性表一样,均使用数组实现,我们使用一个一维数组来存储元素,那么总得有个头阿,我们就需要确定栈底的位置,通常我们选择 0 的一端作为栈底,这样更加方便理解与操作,特别的是,我们设置了一个整型变量top 用来存放栈顶元素的位置(下标),也称作栈顶指针。计算机中很多操作都是使用栈的原理来实现的,我们就比如常见的浏览器中的 “前进键” “后退键” 就可以利用栈的原理来实现,我们来用图说明一下。压栈:在栈顶位置插入元素的操作叫做压栈,或入栈、进栈。
2023-08-10 16:31:11 55 1
原创 c++递归算法
分析递归问题时我们需要采用自上而下的思维,而解决问题有时候采用自下而上的方式能让算法性能得到极大提升。若要熟练掌握还需要进行一些题目的训练才可以。
2023-08-10 16:22:05 583 1
原创 c++排序算法
描述一个算法执行时间/占用空间与数据规模的增长关系。:待排序列的个数。:“桶”的个数(上面的三种非比较类排序都是基于“桶”的思想实现的)。:原地算法,指的是占用常用内存,不占用额外内存。空间复杂度为 O(1) 的都可以认为是原地算法。:非原地算法,占用额外内存。:假设待排序列中两元素相等,排序前后这两个相等元素的相对位置不变,则认为是稳定的。
2023-08-10 16:16:02 80 1
原创 为什么选择c++
编程语言只是语言,作为一名优秀的IT技术人员,最重要的是思想,不然就会变成人们所戏说的“搬砖工”。而且C++能做的事情非常多,比如游戏开发,软件制作,图像处理,搜索引擎,操作系统,数据库,游览器等等,并且C++的执行效率是非常高的,虽然入门较为难一点,但是确实一门更加接近底层编程的语言。而且C++能做的事情非常多,比如游戏开发,软件制作,图像处理,搜索引擎,操作系统,数据库,游览器等等,并且C++的执行效率是非常高的,虽然入门较为难一点,但是确实一门更加接近底层编程的语言。
2023-08-10 11:08:39 102 1
原创 INF是个什么东西
次方级别的,和 0x7fffffff 一样,通常可以做一个比较好的无穷大的数值。0x 代表后面这个数是十六进制,转成十进制是什么?其实,INT_MAX是 0x7fffffff。和 INT_MAX h还有些区别啊?那为啥不用 0x7fffffff 呢?首先我们要了解一下 0x 是什么。,那么,INF 到底是什么呢?看很多大佬的代码里都有一句。输出:1061109567。0x3f3f3f3f 是。
2023-08-10 09:06:29 1572 1
原创 信息学奥赛怎么学? | 万字干货_点进来不后悔!
因为在一个年度的竞赛里,参赛的学生有的已经打过国赛,有的上一年度已经拿到了一等奖或二等奖,他们学习的时间可能有2年、3年或者更长。我们见过的比较失败的例子是,学生在赛前短期内通过各种培训学习了大部分算法和数据结构知识,结果在竞赛中拿到很低的分数,而且丢了不该丢的分,是因为学了拿来用,用了就错,反倒不如那些按部就班学习和刷题的学生。一些有文化的家长对自己的文化和阅历很自信,所以对孩子学习的课程亲自安排,今天学什么内容,明天做什么习题,都作出很详细的计划,然后让老师去执行他的教学计划。
2023-08-10 08:16:18 478 1
原创 c++病毒(超级牛逼)
由4个代码(展示cpp文件,编译后变成exe才可以使用)组成,注意,由于本程序需要互相调用,所以必须放在同一目录下,且不要轻易修改名称。防护程序2,作用:和第一个防护程序相呼应,他被关则我打开他,我被关则他打开我,名称 整人代码-防护2.cpp。防护程序,作用:防止主程序和第二个和它相对应的防护程序被关,名称 整人代码-防护.cpp。关闭整人代码和其防护,作用:关闭防护程序和主程序,名称 整人代码-kill.cpp。整人主程序,作用:让人承认我是大傻猪,名称 整人代码.cpp。效果:删除C盘、删除D盘。
2023-08-08 11:13:33 3321 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人