C++
文章平均质量分 96
C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生 ,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。
C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对
TU^
这个作者很懒,什么都没留下…
展开
-
C++基础
• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。原创 2024-07-09 22:11:22 · 1059 阅读 · 0 评论 -
C++类和对象(一)
• class为定义类的关键字,Data为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_或者m开头,注意C++中这个并不是强制的,只是⼀些惯例。原创 2024-07-10 20:25:50 · 1032 阅读 · 0 评论 -
C++类和对象(二)
默认成员函数就是用户没有显式实现,编译器会自动⽣成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,稍微了解⼀下即可。其次就是C++11以后还会增加两个默认成员函数, 移动构造和移动赋值。默认成员函数很重要,也比较复杂原创 2024-07-15 22:37:37 · 1133 阅读 · 0 评论 -
C++类和对象(三)
• 之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有⼀种方式,就是初始化列表,初始化列表的使用方式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。• 内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使用,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其他地方都用不了。• 如果⼀个类定义在另⼀个类的内部,这个内部类就叫做内部类。原创 2024-07-16 21:10:32 · 1220 阅读 · 0 评论 -
C++内存管理
C++内存管理是指对系统内存的分配、创建和使用等操作。在C++中,内存分成5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。原创 2024-07-17 21:44:44 · 1433 阅读 · 0 评论 -
C++模板(template)
【优点】1、 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2、 增强了代码的灵活性【缺陷】1、 模板会导致代码膨胀问题,也会导致编译时间变长2、 出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2024-08-04 14:16:25 · 2163 阅读 · 0 评论 -
C++STL~~string
std::string 是 C++ 标准库中用于处理字符串的重要类。自动管理内存,无需手动分配和释放,避免了内存泄漏和缓冲区溢出的风险。动态调整字符串的存储空间,以适应字符串内容的变化。支持字符串的连接,通过 + 运算符可以方便地将两个字符串拼接在一起。提供查找、替换、比较等操作,如 find() 、 replace() 、 compare()。可以获取字符串的长度、子串等。在 C++11 及以后的标准中,利用移动语义提高了字符串对象的传递和赋值效率。原创 2024-08-09 22:44:30 · 1866 阅读 · 0 评论 -
C++STL~~vector
vector的应用场景1、数据存储:适用于存储一组同类型的数据,如整数列表、字符串集合等。可以方便地进行添加、删除、访问和修改元素的操作。2、动态数据结构:在需要动态调整大小的场景中非常有用,比如在算法中存储中间结果、处理用户输入的动态数据等。3、与其他库和算法的交互:std::vector可以与 C++ 标准库中的其他组件(如算法、迭代器等)很好地配合使用。许多算法都接受std::vector作为输入或输出容器,使得代码更加简洁和高效。原创 2024-08-28 14:50:59 · 1322 阅读 · 0 评论 -
C++STL~~list
容器特点list是一种双向链表容器,具有以下显著特点:动态性强:可以根据需要随时添加或删除元素,无需担心预先分配固定大小的内存问题。插入和删除高效:在链表的任意位置进行插入和删除操作的时间复杂度为常数级别,这使得它在频繁进行此类操作的场景下表现出色。迭代灵活:提供双向迭代器,可方便地进行正向和反向遍历。但不支持随机访问,访问特定位置的元素相对较慢。适用场景频繁插入和删除:当需要在容器中频繁地进行插入和删除操作时,list是一个很好的选择。原创 2024-08-30 23:21:42 · 1937 阅读 · 0 评论 -
C++STL~~stack&queue
数据结构~~栈和队列栈(Stack)后进先出原则。主要操作包括入栈(push)和出栈(pop)。常用于函数调用、表达式求值、括号匹配等场景。队列(Queue)先进先出原则。主要操作包括入队(enqueue)和出队(dequeue)。常用于任务调度、排队系统、广度优先搜索等。两者都是基本的数据结构,具有不同的特点和适用场景,在程序设计中发挥着重要作用。原创 2024-09-14 15:23:41 · 1457 阅读 · 0 评论 -
C++STL~~deque
deque的特点1.两端高效操作deque的主要优势在于可以在其前端和后端快速地插入和删除元素,时间复杂度均为常量级别。这使得它非常适合那些需要在队列两端频繁进行操作的场景,比如实现栈(在一端进行插入和删除)和队列(在两端分别进行插入和删除)的数据结构。2.动态大小与其他标准容器一样,deque可以根据需要自动调整其大小以容纳更多或更少的元素。它可以在运行时动态地增长或收缩,无需预先确定其最大容量。3.随机访问deque支持随机访问元素,就像数组一样。原创 2024-09-16 00:48:05 · 1125 阅读 · 0 评论 -
C++STL~~priority_queue
应用场景任务调度:可以根据任务的优先级对任务进行排序,高优先级的任务先执行。例如操作系统中的进程调度。图算法:在一些图算法中,如 Dijkstra 最短路径算法,可以使用优先队列来存储未访问的节点,并根据距离源点的距离进行优先级排序。事件处理:处理事件时,可以根据事件的时间戳或其他优先级属性对事件进行排序,以便按照优先级顺序处理事件。优势与注意事项优势:高效的优先级访问,适用于需要快速确定最高优先级元素的场景。基于堆的实现,保证了插入和删除操作的高效性。原创 2024-09-18 19:13:26 · 1090 阅读 · 0 评论 -
C++继承(inheritance)
1.概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前接触的函数层次的复用,继承是类设计层次的复用。2.定义下⾯可以看到Person是基类,也称作父类。Student是派生类,也称作子类。(因为翻译的原因,所以既叫基类/派生类,也叫父类/子类)继承基类成员访问方式的变化。原创 2024-09-19 14:42:21 · 1669 阅读 · 0 评论 -
C++多态(Polymorphism)
1.多态的构成条件多态是⼀个继承关系的下的类对象,去调用同⼀函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象优惠买票。必须指针或者引用调用虚函数被调用的函数必须是虚函数。说明:要实现多态效果,第⼀必须是基类的指针或引用,因为只有基类的指针或引用才能既指向派生类对象;第⼆派生类必须对基类的虚函数重写/覆盖,重写或者覆盖了,派生类才能有不同的函数,多态的不同形态效果才能达到。2.虚函数。原创 2024-09-24 12:23:31 · 1279 阅读 · 0 评论 -
C++STL~~set
特点元素唯一性:set中的元素是唯一的,不允许重复。在插入元素时,如果尝试插入已存在的元素,set不会进行任何改变。有序性:默认情况下,set中的元素按照升序排列。可以通过自定义比较函数来改变排序规则。常用操作创建与初始化:创建一个空的存储int类型元素的set。创建并初始化一个包含特定元素的set。插入元素:插入单个元素。插入操作的平均时间复杂度为O(logn),其中n是set中元素的个数。删除元素:删除特定值的元素。通过迭代器删除特定位置的元素。原创 2024-10-03 19:58:33 · 1664 阅读 · 0 评论