C++
文章平均质量分 87
五花肉村长
流水不争先,争的是滔滔不绝。
展开
-
C++ 模版(进阶)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有 目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。优点:1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性缺点:1. 模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2024-11-19 21:37:57 · 621 阅读 · 0 评论 -
C++ stack 和 queue
queue的文档介绍翻译:1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元 素,另一端提取元素。2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供 一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少 支持以下操作:empty:检测队列是否为空size:返回队列中有效元素的个数front:返回队头元素的引用。原创 2024-11-19 15:14:14 · 1056 阅读 · 0 评论 -
C++ list
因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入 时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭 代器,其他迭代器不会受到影响。通过前面例子知道,反向迭代器的++就是正向迭代器的--,反向迭代器的--就是正向迭代器的++, 因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对 正向迭代器的接口进行包装即可。此处,大家可暂时将迭代器理解成一个指针,该指针指向list中的某个节点。原创 2024-11-18 10:21:08 · 316 阅读 · 0 评论 -
C++ vector
迭代器是一种封装的体现,屏蔽了底层的实现细节,提供了统一的类似访问容器的方式,不需要关心容器底层结构和实现细节,底层类似于指针但实际上不是指针,不是所有的容器的迭代器都是原生指针,容器的底层有的是数组有的是链表,物理结构上有的不连续,指针解引用也不是真实值。原创 2024-11-07 15:27:07 · 600 阅读 · 0 评论 -
C++ String
C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列 的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户 自己管理,稍不留神可能还会越界访问。在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、 快捷,基本都使用string类,很少有人去使用C库中的字符串操作函数。原创 2024-11-03 21:20:27 · 984 阅读 · 0 评论 -
C++ STL
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的 组件库,而且是一个包罗数据结构与算法的软件框架。STL主要包括容器(Containers)、迭代器(Iterators)、算法(Algorithms)和函数对象(Function Objects)四个部分。这些组件可以相互协作,提供高效、灵活的数据处理功能。原创 2024-11-01 21:09:26 · 614 阅读 · 0 评论 -
C++ 模版(初阶)
类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的 类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。原创 2024-11-01 20:39:53 · 325 阅读 · 0 评论 -
C/C++内存管理
1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造。原创 2024-11-01 15:16:30 · 951 阅读 · 0 评论 -
C++类和对象(下)
⽆论是否显⽰写初始化列表,每个构造函数都有初始化列表;⽆论是否在初始化列表显⽰初始化,每个成员变量都要⾛初始化列表初始化;const修饰的变量只有一次赋值初始化的机会,就是在它定义的时候,必须在定义的时候初始化,之后不能改变通俗的讲,声明是告诉我们有这个东西,定义是木已成舟,已经开空间了。声明的顺序也就是在内存当中从上到下存放的顺序。原创 2024-10-28 14:43:28 · 609 阅读 · 0 评论 -
C++类和对象(中)
默认成员函数就是⽤⼾没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类,我 们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最 后两个取地址重载不重要,我们稍微了解⼀下即可。其次就是C++11以后还会增加两个默认成员函数, 移动构造和移动赋值,这个我们后⾯再讲解。默认成员函数很重要,也⽐较复杂.我们要从两个⽅⾯ 去学习:• 第⼀:我们不写时,编译器默认⽣成的函数⾏为是什么,是否满⾜我们的需求。原创 2024-10-23 17:17:31 · 802 阅读 · 0 评论 -
C++ 类和对象(上)
• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_或者m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。原创 2024-10-22 18:27:08 · 738 阅读 · 0 评论 -
C++基础知识(2)
• ⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数,这样调⽤内联 函数就需要建⽴栈帧了,就可以提⾼效率。• inline对于编译器⽽⾔只是⼀个建议,也就是说,你加了inline编译器也可以选择在调⽤的地⽅不展 开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。inline适⽤于频繁 调⽤的短⼩函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略。原创 2024-07-27 18:40:28 · 298 阅读 · 0 评论 -
C++ 基础知识(1)
• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。原创 2024-07-09 20:25:34 · 850 阅读 · 0 评论
分享