- 博客(22)
- 收藏
- 关注
原创 类类型的参数传递给函数
在C++中,当你想要将一个类类型的参数传递给函数时,你可以直接使用类名作为参数类型。当你需要函数内部修改对象的值,并且这些修改需要反映到函数外部时,你可以按值传递对象。如果你需要在函数内部修改对象,并且希望这些修改反映到函数外部,你可以按指针传递对象。可以将对象转换为右值引用,这允许函数“拿走”对象的资源,使原始对象变为空。按值传递会创建对象的一个副本,因此函数内部对对象的修改不会影响原始对象。按引用传递可以避免复制对象,并且可以在函数内部修改对象。如果你不希望函数内部修改对象,可以按常量引用传递。
2024-11-19 09:31:37
307
1
原创 c++程序设计速学4字符串处理
暴力匹配算法是最简单的模式匹配算法,从文本的第一个字符开始,逐个字符与模式进行比较。Boyer-Moore 算法通过跳过不可能匹配的部分来提高效率。坏字符规则:根据模式中最后一个字符在模式中的位置决定跳过的步长。KMP 算法通过预处理模式来避免不必要的比较,从而提高效率。好后缀规则:根据模式的后缀在模式中的位置决定跳过的步长。计算文本中每个子串的哈希值,并与模式的哈希值进行比较。利用前缀函数在匹配失败时快速跳过已经比较过的字符。使用坏字符规则和好后缀规则来决定跳过的步长。计算模式的前缀函数(部分匹配表)。
2024-11-08 13:56:54
337
原创 c++程序设计速学笔记3复杂数据结构
树的根节点(root node)位于顶部,其他节点通过分支(branches)连接。树的每个节点可以有零个或多个子节点(child nodes),没有子节点的节点称为叶节点(leaf nodes)。堆(Heap)是一种特殊的完全二叉树,通常用于实现优先队列(Priority Queue)。在这两种堆中,每个节点的值都满足一定的条件,使得堆的根节点具有特殊的意义。图由节点(顶点,Vertices)和边(Edges)组成,可以用来表示多种现实世界的问题,如社交网络、交通网络、计算机网络等。
2024-11-07 01:07:35
1165
原创 c++程序设计速学笔记2基础数据结构
数组是一种线性数据结构,它存储相同类型的元素的连续内存块。数组的每个元素都有一个索引,用于快速访问和操作数据。然而,由于它不支持随机访问,所以不适合需要频繁访问中间元素的场景。栈(Stack)是一种后进先出(LIFO,Last In First Out)的数据结构。链表是一种线性数据结构,由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。vector 是一种动态数组容器,它封装了数组的功能,并允许在运行时动态地调整大小。队列常用于处理需要保持元素顺序的场景,如打印任务队列、消息队列等。
2024-11-06 21:23:12
330
原创 c++程序设计速学1
在C++中学习数据结构与算法,主要涉及以下几个核心内容:基础数据结构:复杂数据结构:字符串处理:递归与分治算法:动态规划:贪心算法:排序算法:搜索算法:图算法:算法设计与分析:面向对象编程与数据结构:STL(Standard Template Library):并发与多线程:内存管理:实际问题解决:
2024-11-06 16:35:20
285
原创 特征归一化
特征归一化是机器学习中非常重要的数据预处理步骤,它主要目的是将不同量纲或数值范围的特征转换到同一尺度上,以消除特征之间的量纲影响,确保不同指标具有可比性。这一过程有助于提高机器学习模型的性能和收敛速度,特别是在使用基于梯度下降的优化算法时。
2024-10-16 11:09:13
845
原创 模型评价方法
在实际应用中,需要根据具体的数据集、任务需求和模型类型来选择合适的评价方法。它展示了模型在不同阈值下的真正例率(True Positive Rate,即召回率)和假正例率(False Positive Rate)之间的关系。模型评价是机器学习领域中的一个重要环节,它旨在评估模型的性能并确定其是否满足实际应用的需求。K折交叉验证:将数据分成K份,每次用K-1份做训练集,1份做验证集,循环K次。在某些情况下,ROC曲线可能不够敏感,无法准确反映模型在不同类别上的性能差异。
2024-10-15 19:22:56
564
原创 内联函数inline
在这个示例中,square函数被定义为内联函数。如果编译器决定内联,那么在main函数中调用square(num)时,会被替换为num * num。内联函数通常不适用于递归函数,因为递归调用会导致无限展开,编译器通常会忽略inline建议。过度使用内联函数会导致代码膨胀,增加二进制文件的大小,并可能降低缓存效率,从而影响性能。通常,内联函数的声明和定义放在一起,因为编译器需要在编译时看到函数体以决定是否内联。在类的定义中直接定义的成员函数(在类声明中定义的函数体)默认是内联的。
2024-10-13 19:58:01
355
原创 标准模板库STL
C++ 的标准模板库(Standard Template Library,简称 STL)是一组由 C++ 标准委员会制定的模板类和函数,用于实现常见的数据结构和算法STL。STL 提供了丰富的算法,用于对容器中的元素进行各种操作,如排序、查找、复制、替换、变换和生成等。除了容器适配器外,STL 还提供了迭代器适配器和函数适配器,用于改变迭代器或函数对象的行为。适用容器:支持随机访问迭代器的容器,或可以通过迭代器进行反向遍历的容器。功能:删除容器中的元素,可以是单个元素或指定范围内的元素。
2024-10-13 19:57:05
943
原创 静态数据常量与变量的辨析及应用
在C++中,静态数据成员是类的一部分,但它们不属于类的任何特定对象。静态数据成员在程序的整个运行期间只存在一个副本,无论创建了多少个类的对象。以下是一些关于C++中静态数据成员的关键知识点:声明和定义:访问:初始化:作用域:存储:线程安全:静态数据成员函数:友元和继承:静态数据成员通常用于那些应该被类的所有对象共享的数据,例如计数器,或者那些与类本身相关而不是与任何特定对象相关的数据。在编程中,常量和变量是存储和操作数据的基本概念。以下是关于常量和变量的一些基础知识:定义:变量是
2024-10-11 10:35:14
919
原创 指针的使用方法以及其他相关概念
这里ptr就是一个指向a的指针,存储了a的内存地址。指针是一个变量,它存储的是另一个变量的内存地址,而不是值本身。空指针是指不指向任何变量的指针,可以用来表示一个无效的指针。需要注意的是,使用完动态分配的内存后,一定要使用delete或delete[](对于数组)来释放内存,以避免内存泄漏。在这个例子中,swap函数通过指针参数接收两个整数的地址,并交换它们所指向的内存地址中的值。这里的int* ptr表示ptr是一个指向整型的指针,&num是获取num的内存地址。,即可得到该指针所指向的变量的值。
2024-10-11 10:31:54
505
原创 友元函数friend
在C++中,友元函数(Friend Function)是一种特殊类型的函数,它不属于类的成员函数,但可以访问类的私有成员和保护成员。友元函数可以是普通函数、其他类的成员函数或类的成员函数模板。
2024-10-10 19:55:40
418
原创 nullptr与宏
在C和C++等编程语言中都是代码复用的重要手段,但它们之间存在一些显著的区别。本质区别宏定义:是预处理指令,在编译前进行文本替换,不分配内存,不占运行时间,只占编译时间。函数:是程序中的一段独立代码,用于实现特定的功能,可以被多次调用。函数调用会带来额外的开销,如栈空间分配、返回地址记录、参数压栈等。参数类型宏定义:宏的参数是无类型的,只要参数的操作是合法的,它可以用于任何参数类型。这意味着宏可以处理不同类型的参数,但也可能导致类型不匹配的问题。
2024-10-07 15:52:07
577
原创 C 语言stdlib.h
这些函数在特定的应用程序或系统编程中可能会有用,但在日常编程中使用较少。这个头文件包含了许多通用的函数和宏定义,这些函数和宏定义执行各种通用的任务,如内存分配、程序控制、类型转换、随机数生成等。头文件中包含了许多不常用的函数,这些函数在特定的场合或较少使用的编程任务中可能会用到。中的函数时,需要包含这个头文件,以便编译器知道这些函数和宏的定义。:生成一个唯一的文件名并打开该文件,带有随机后缀。:生成一个唯一的文件名并打开该文件。:设置随机数生成器的种子。:执行一个shell命令。:设置随机数生成器的种子。
2024-09-29 23:16:22
714
原创 线性回归算法
线性回归的目标是找到一条直线(在一元线性回归中)或一个超平面(在多元线性回归中),使得数据点到该直线或超平面的距离之和最小。在进行分析之前,需要对数据进行检查和处理,去除异常值或对其进行适当的处理。线性回归需要足够的数据量来保证模型的准确性和稳定性。同时,数据的质量也很重要,包括数据的准确性、完整性和一致性等。通过线性回归可以分析自变量与因变量之间的关系,判断自变量对因变量的影响程度。线性回归可以用于预测因变量的值,例如房价预测、销售预测等。线性回归可以对数据进行拟合,找到数据的趋势和规律。
2024-09-21 22:31:14
587
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人