- 博客(15)
- 收藏
- 关注
原创 C/C++内存分布以及相比于malloc,C++中new和delete优点
C++ 的new和delete提供了更强的类型安全、自动管理资源和异常处理机制,使得 C++ 在面向对象编程上更为高效和安全。这些特性使得 C++ 推荐使用new和delete进行动态内存管理,而不使用 C 的malloc和free。
2024-08-04 17:51:24 550
原创 函数模板与类模板
函数重载,如果一个同名函数有多个定义,那么在调用时的优先级如何? 1.同时有普通函数和模板函数,优先匹配普通函数+参数匹配 2.没有普通函数,优先匹配参数匹配+函数模板 3.只有一个,类型转换也能用,也可以匹配调用如图所示://分享一下优秀课件
2024-08-01 13:13:45 174
原创 动态规划3行代码快速解决约瑟夫环问题
举个例子n个人从0排序到n-1,随机给一个数为m,从0开始报数到m次到编号为m-1的人,m-1的人出局,再次从编号为m的人开始报数m次,2m-1的人出局,不断进行这个循环直到最后的赢家诞生,这是经典的约瑟夫环问题。并且:dp[1] = 0;有i人的约瑟夫环的胜者编号。相当于+1-n,所以。
2024-07-20 15:53:47 209
原创 简明理解动态规划5步解题流程
一般来说使用动态规划手段解决问题在我们遇到重复子问题计算并且有着最优路径选择等问题时,我们常常要考虑多个方面并比较或重复计算,例如计算斐波那契数列时if n
2024-07-17 17:02:45 275
原创 c++命名空间的使用
命名空间中声明的实体被称为命名空间的成员,成员的名字会自动由命名空间的名字限定,例如universe命名空间的两个成员名字分别为universe::a,universe::rand。不同用户可以声明各自的命名空间。
2024-04-16 14:28:40 893
原创 数据结构——栈队列基础操作的代码实现
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。空队列:不包含任何元素的空表。队列的常见基本操作//初始化//队列的销毁// 入队列// 出队列最先进入队列的值最后进入对列的值判空取大小2.2 .代码实现。
2024-03-03 03:15:29 580
原创 简要理解c语言程序编译和链接
通常在我们写好c程序后,使用编译器直接编译运行即可,但是就像如此简单的一句程序gcc test.c同样有其深入复杂的原理,深入理解他们有助于我们更好的理解程序编译执行的过程。通常,这过程细分共有四步,预编译(又叫预处理),编译,汇编,链接。即正常本来是编译和执行,但编译部分又被分为了预编译,编译,汇编三部分。同时编译进行的环境我们叫做翻译环境,执行文件在电脑上的环境称作执环境,现在让我们细节的简要直白展示一下编译的过程。(想要了解更多相关知识可以参考《程序员的自我修养一书》)我们写c语言程序的时候,不知道大
2024-01-15 23:08:42 1585
原创 C语言深入理解指针--从零基础到深入理解
对比以下两端代码,主要在调试时观察内存的变化可以发现左侧代码是将每个地址对应空间内的值都改为了0,而右侧代码只是将首地址中的值改为了0,那么结论:指针的类型决定了,对指针接引用的时候有多大的权限(一次能操作几个字节)比如:char*的指针解引用只能访问一个字节,而int*的指针解引用能访问4个字节。
2023-11-29 19:04:24 1504 1
原创 求一个数二进制数中1的个数的三种方法
例如我们求十进制的数n的每一位的时候通常会模10然后再除以10循环得到每一位直到n为0时循环停止,代码如下:然此法也有缺陷,即当n为负数时,例如-1,第一次进入if判断不成功再除以2后直接n变成0退出循环,故而我们需要对此进行改进,因为负数在内存中是以补码的形式存储,而-1的补码为: 11111111111111111111111111111111共三十二位1,我们只需另函数接收时以无符号整型接收;如图:我们知道二进制的最后一位如果是0那么与1按
2023-11-05 19:40:41 130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人