![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++基础知识点
文章平均质量分 69
C++基础知识点
筱姌
不被定义,庆幸自己,我可以是任何样子。我野蛮生长,自己便是月亮。
展开
-
C++运算符的重载
这意味着我们可以为类或结构体重新定义(重载)运算符的行为,使其能够用于特。原创 2024-05-04 14:46:48 · 534 阅读 · 0 评论 -
栈和链表的区分
定义了一个整数类型的栈,并依次将1至n压入栈中。然后显示栈的大小,访问并打印栈顶元素但不移除。接下来,我们将栈顶元素逐一出栈并打印,直至栈为空。最后检查栈是否为空并输出结果。来实现,但栈关注的是。操作,而链表关注的是。原创 2024-04-30 18:26:48 · 366 阅读 · 0 评论 -
二分查找和二分答案
二分查找(Binary Search)和二分答案(Binary Search for Answer)是两种不同的算法思想,尽管它们都基于,但应用场景和目的有所不同。原创 2024-04-28 17:08:05 · 305 阅读 · 0 评论 -
#include <string>的用法
类提供了对文本字符串的强大支持,相比C语言中的字符数组(char[] 或 char*)更加方便易用,它是一个。:可以使用多种方式创建字符串对象,如通过字面值、字符数组、另一个字符串对象或字符迭代器范围。极大地简化了C++中字符串的操作,提高了程序的稳定性和安全性,同时也提升了开发效率。包含了C++标准库中的字符串类——std::string的定义及相关函数。:可以方便地转换为C风格字符串(char*)或从C风格字符串转换,使用。对象能够存储任意长度的文本字符串,包括空字符串。)用于字符串间的比较。原创 2024-04-30 17:50:46 · 611 阅读 · 0 评论 -
动态规划与搜索算法
动态规划往往涉及记忆化(Memoization)或填表,存储已经计算过的子问题答案以减少重复计算。搜索算法中也有类似的概念,如记忆化搜索,但它更侧重于避免回溯过程中的重复状态探索。:动态规划往往需要额外的空间存储中间结果,搜索算法则通常需要栈(DFS)或队列(BFS)来跟踪搜索路径,两者都会占用额外空间,但动态规划的记忆化表一般会更大。,并计算子问题的解,然后通过组合子问题的解来构造原问题的解。:动态规划主要用于求解最优化问题,而搜索算法主要用于找到从起点到终点的路径或其他满足条件的状态。原创 2024-04-29 23:53:19 · 682 阅读 · 0 评论 -
stoll函数和std::to_string函数
std::to_string`函数是C++11引入的标准库函数,它可以将各种内置数值类型(如`int`、`long long`、`float`、`double`等)转化为对应的字符串表示形式。举例来说,如果`x`的值是123,执行上述语句后,字符串`t`将存储"123"这个字符串。在C++编程语言中,`string t = to_string(x);如果字符串无法转换为整数,例如包含非法字符或者数值超出。(假设这里的`x`是一个整数或浮点数)是一个有效的十进制数字符串,中的一个函数,全称为。原创 2024-04-29 18:24:36 · 708 阅读 · 0 评论 -
C++中的位运算符
类可以用于更高级别的位操作,比如按位逻辑运算、获取和设置单个位等。C++标准库并没有内置大量的位运算函数,但某些编译器提供了。原创 2024-05-03 21:23:09 · 857 阅读 · 0 评论 -
getline的使用条件以及限制条件
函数在C++中有两种主要的形式,分别是C++标准库提供的用于读取文本行的函数,以及POSIX兼容系统(如GNU C++)提供的C风格的函数。 使用条件:限制条件: 使用条件:限制条件:C++标准库中的不会读取终止符,而POSIX 会读取并包含终止符在内。在使用任何函数时,都要确保流的状态有效,否则可能出现未定义行为。POSIX(Portable Operating System Interface of UNIX)是指可移植操作系统接口,它是IEEE(电气和电子工程师协会)和ISO(国际标准原创 2024-05-07 21:48:14 · 891 阅读 · 0 评论 -
C++面向对象的四大特征
四大特征相互关联,构建复杂而灵活的软件系统,同时保持代码的清晰和可维护性。原创 2024-05-10 22:29:18 · 272 阅读 · 0 评论 -
私有成员、公共成员、保护成员如何定义
私有成员(Private Members)是类内部的变量(数据成员)或函数(成员函数/方法),这些成员只能被该类自身访问,而不能被类的外部代码(包括其他类的成员函数或全局函数)直接访问。私有成员的存在是为了实现封装,即隐藏类的内部实现细节,确保数据的安全性和完整性。私有成员的使用,使得类的设计者能够控制数据的读写权限,防止外部代码直接修改内部状态,从而提高了代码的健壮性和可维护性。C++中,使用privateprivate:public:} // 公有方法可以访问私有成员在这个例子中,原创 2024-05-06 15:42:13 · 624 阅读 · 1 评论 -
数与字符串相互转化
这些是C语言中的函数,但在C++中也可以使用,尤其适合于需要更多控制或与C库交互的情况。是一个更通用的工具,可以将多种类型的数据转换为字符串,也可以从字符串中读取数据。它们的主要区别在于转换后得到的整数类型不同,以及适用的场景也因此有所差异。转换的目标数据类型不同,以及需要根据实际情况选择合适的转换函数以确保。函数,这是一个简单直接的方法来将基本数据类型转换为字符串。都是C++标准库中的函数,用于将。使用时还需要注意错误处理,例如。原创 2024-05-12 10:42:11 · 543 阅读 · 0 评论 -
C++中的setprecision: fixed: scientific等函数
在C++中,fixedscientifichexoct, 和dec是用于,它们都是中的一部分。原创 2024-05-09 23:55:33 · 352 阅读 · 0 评论 -
多项式乘法、小猫排队
---《论猫的自我修养》小猫啾啾现在就很苦恼,它排在队伍的末尾处等着买酱油,前面还有足足n只猫咪。但幸运的是小猫啾啾会一种魔法:它可以和前面距离它最近且比它可爱(可爱值大于啾啾)的小猫交换位置(被交换的小猫会被传送到啾啾之前的位置)。已知啾啾每一分钟开始时可以施展一次魔法,而每一分钟过后排在队伍最前面的猫咪就会离开队伍(这意味这啾啾会先交换位置然后队伍才开始移动)。也是一个多项式,但他不清楚每一项的系数。第一行两个整数 n,m ,表示多项式 P 的最高次项次数 n 和 Q的最高次项次数 m。原创 2024-05-15 18:36:14 · 627 阅读 · 0 评论 -
公有、保护、私有继承的区别
选择哪种继承方式取决于设计目的)公有继承强调类型兼容性和接口复用;保护继承用于限制访问同时保持一定程度的内部可访问性;私有继承则更倾向于实现特定功能的复用,而不暴露基类接口给派生类的用户。原创 2024-05-06 15:14:32 · 370 阅读 · 0 评论 -
cin.ignore()函数和stoll函数
接着,演示了如何使用基数16来转换十六进制字符串。最后,尝试将包含非法字符的字符串转换为数字,这将抛出。读取输入后,可能会有遗留的字符(比如用户输入的多余字符或者换行符)留在输入缓冲区。被用来丢弃输入缓冲区中用户输入整数后的任何剩余字符,特别是换行符,这样。可能会立即读取到缓冲区中的换行符,导致看起来像是什么都没输入。:如果你想在读取输入前跳过某些特定字符(比如换行符。可以帮助清除这些不需要的字符,保持输入的清洁。可以避免因缓冲区中残留的字符导致的错误读取。:在连续读取输入时,特别是在混合使用。原创 2024-05-11 22:20:23 · 784 阅读 · 0 评论 -
多态的具体用法
允许不同的对象对同一消息做出响应,即同一个接口,使用不同的实例而执行不同操作。多态性提供了代码的扩展性和复用性,使得代码更加灵活和易于维护。原创 2024-05-15 23:50:44 · 333 阅读 · 0 评论 -
面向对象特征(抽象、封装、继承、多态)的具体用法
用法示例假设我们要为一个学校信息系统设计一个Student类,我们只需要关注学生的基本属性(如姓名、学号)和行为(如注册课程),而不必关心学生的具体个人信息细节。public:// 构造函数,初始化基本信息// 行为示例:注册课程private:// 学生姓名// 学号// 已注册课程列表。原创 2024-05-10 22:44:22 · 189 阅读 · 0 评论 -
<iomanip>库中setw(),setfill()等函数的使用
这是一个用于操纵输出格式的函数,用于美化C++程序的输出格式,特别是在表格和对齐输出方面,属于。代表“set width”,用于设置输出的宽度,控制输出内容在指定的宽度内对齐。,特别是数字前面填充零或使用特定字符以达到固定宽度输出时非常有用。函数设置了接下来输出的宽度为n个字符。#include是C++标准库中的一个头文件,提供了用于。默认情况下填充的字符是空格。两侧被填充了星号以达到总宽度10。库中的一个操纵符,用于指定在。指定了输出宽度为5,因此数字。设置了宽度为10,导致文本。原创 2024-05-08 17:00:46 · 557 阅读 · 2 评论 -
编程语言的动态内存管理 new 和 delete malloc和free
在C++中,new和delete是一对操作符,用于。它们是进行的关键工具,在程序运行过程中灵活地。原创 2024-05-07 13:25:11 · 649 阅读 · 1 评论 -
C++中的指针
声明指针时,需要指定指针所指向的数据类型,例如,函数可以接受两个参数,第一个是命令行参数的数量,第二个是一个指向这些参数的指针数组(字符指针数组),这些参数以NULL结束。可以创建一个数组,其中每个元素都是指向函数的指针,这样就可以通过索引来调用不同的函数。C++中指针的灵活性和强大功能,但也强调了正确使用它们的重要性,以避免常见的编程错误。:指针一旦初始化后,就不能再指向其他地址,但指向的数据可以修改。:指向函数的指针,可以用来存储函数的地址,进而通过指针调用函数。指针数组是一组指向特定类型数据的指针。原创 2024-05-19 22:53:14 · 771 阅读 · 0 评论 -
智慧指针是什么以及具体用法
在C++中,是一种模拟拥有所有权的指针对象,设计用于自动管理动态分配的内存,以防止内存泄漏和悬挂指针的问题。它提供了一个检查对象是否仍然存在的方法,如果对象已被删除,则可以安全地避免使用悬挂的指针。智慧指针的使用简化了内存管理,使得开发者可以更专注于程序逻辑,而不是资源管理的细节,从而提高了代码的安全性和可维护性。它内部维护了一个引用计数来跟踪有多少个智能指针共享同一对象,当引用计数降至零时,对象会被自动删除。要安全地管理这段代码中的堆内存生命周期,并避免悬挂引用的问题,你可以使用智能指针,特别是。原创 2024-05-20 09:30:00 · 342 阅读 · 0 评论 -
C++中的引用
在C++中,引用是对另一个变量的别名,也就是说,一旦引用被初始化为某个变量,它就是该变量的另一个名字,对引用的操作实际上就是对原始变量的操作。引用必须在定义时初始化,并且之后不能再绑定到另一个变量上。通过返回引用或引用的组合(如pair、tuple或自定义结构体),可以在一定程度上实现“返回多个值”。这是不推荐的做法,因为如果返回的引用指向的堆内存被释放,那么这个引用就变成了悬挂引用,导致未定义行为。正确的做法是直接管理堆内存的生命周期,或者使用智能指针。原创 2024-05-20 09:00:00 · 826 阅读 · 0 评论 -
C++中的结构应用:Josephus问题
Josephus问题是一个经典的理论问题,n个人围成一圈,从第一个人开始报数,每数到第m个人就被排除出圈,然后从下一个人继续开始报数,如此循环,直到只剩下最后一个人。问题要求找出这个幸存者的编号。原创 2024-05-21 08:00:00 · 470 阅读 · 0 评论 -
C++中的结构
结构(struct)是C++中的一种复合数据类型,允许你定义自己的数据类型,将不同类型的数据组合在一起。结构与类(class)相似,但默认情况下其成员是公有的(public),这意味着结构内的所有成员可以直接被外部访问。原创 2024-05-21 07:00:00 · 524 阅读 · 0 评论 -
C++期末考试注意点
函数重载和运算符重载实现的多态性属于静态多态性,在程序编译时系统就能决定调用的是哪个函数因此静态多态性又称编译时的多态性。静态多态性是通过函数的重载实现的(运算符重载实质上也是函数重载)。默认拷贝构造函数体一定是空的。拷贝构造函数体的工作不负责位对位对象般来它负责资源分配和由复制,说此而来的指针修改。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。动态多态性是在程序运行过程中才动态地确定操作所针对的对象。动态多态性是通过虚函数实现的。原创 2024-04-21 10:33:37 · 421 阅读 · 0 评论 -
C++期末考试注意点2
静态成员函数都不行,因为它不捆绑对象,同样,构造函数也不行因为它只产生对象,也不捆绑对象,可是,析构函数却可以是虚函数。一旦有了虚函数,就不可能是内联函数。纯虚函数是在声明虚函数时被“初始化”为0的函数。如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数。②最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统这是纯虚函数”;③这是一个声明语句,最后应有分号纯虚函数只有函数的名字而不具备函数的功能,不能被调用。①纯虚函数没有函数体;原创 2024-04-21 12:58:37 · 460 阅读 · 0 评论