C++
文章平均质量分 95
学习CPP语法,STL容器,各种库算法等
码农烧烤小站
FREESTYLE ON CODERAP
展开
-
C++进阶:异常和智能指针
实际项目中不可随便抛任意类型的异常,这样会增加处理难度。很多公司都会定义自己的异常类体系进行规范的异常管理。实际工程中也都是自定义异常类体系,用父类对象捕获子类对象,这非常实用。", 101);//...//...原创 2023-09-07 14:15:52 · 432 阅读 · 0 评论 -
C++进阶:c++11
相比于C++98,C++11则带来了数量可观的变化,以及对C++03缺陷的修正。C++11语法更加泛化简单化、更加稳定安全,功能更强大,提升开发效率。原创 2023-07-23 20:26:59 · 214 阅读 · 0 评论 -
C++进阶:哈希
哈希也叫做散列,记数排序就体现了哈希思想。计数排序为统计数字出现的个数,为每个数字都开辟了对应的一块空间,用来记录其出现的个数,每遇到就加一。将一个元素和一个位置建立映射关系,这就是哈希的本质。常见的数据类型如整数,库中自带哈希函数,但有些类型比如自定义类型,需要我们自定义哈希函数。可以把哈希函数设计成仿函数,对不同类型添加特化处理。return key;} };// 特化 template < > struct Hash < string > {} };原创 2023-07-20 16:26:28 · 102 阅读 · 0 评论 -
C++进阶:map和set
键值对是表示具有对应关系的一种结构,一般只有两个成员key和value,key代表键值,value表示对应的数据。} };pair就是键值对,实际上是一个结构体,被map当作元素类型使用。搜索树的查找效率高,但如果数据有序或接近有序,搜索树就会退化成单支树,查找效率就会变成线性的。使用AVL树插入新结点时会对树进行调整,保证每个结点的左右子树高度之差的绝对值不超过1。从而降低树的高度,减少平均搜索长度。该树的左右子树都是AVL树,左右子树的高度之差(简称平衡因子)的绝对值不超过1。原创 2023-07-16 21:10:16 · 157 阅读 · 0 评论 -
C++进阶:多态
文章目录多态1. 多态的概念1.1 虚函数虚函数的定义重写的构成条件重写条件的例外1.2 多态的构成条件多态的效果1.3 重载重写隐藏对比重载重写隐藏1.4 final & overridefinal 修饰类final 修饰虚函数override2. 抽象类2.1 纯虚函数和抽象类2.2 接口继承和实现继承实现继承接口继承3. 多态的原理3.1 虚函数表虚表指针虚表的底层原理3.2 多态的实现原理3.3 动态绑定与静态绑定4. 不同继承关系的虚函数表4.1 单继承的虚函数表4.2 多继承的虚函数表4原创 2022-05-30 08:02:21 · 510 阅读 · 33 评论 -
C++初阶:IO流
IO流1. C语言IOC语言中常用的输入输出函数有如下几种:前者是格式化标准输入输出,后者是格式化文件输入输出,最后是格式化字符串输入输出。函数名内容备注scanf从标准输入流(键盘)读取格式化的数据省略standardfscanf从所有输入流读取读取格式化数据f:filesscanf从字符串中读取格式化的数据s:stringprintf将格式化的数据输出到标准输出流(屏幕)上省略standardfprintf将格式化数据输出到所有输出流原创 2022-04-12 17:05:51 · 691 阅读 · 35 评论 -
C++初阶:模板进阶
泛型编程和模板STL 简介STL(standard template libaray)是 C++ 标准库的重要组成部分:标准模板库。STL 不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。也成为 HP 版本,是所有STL实现版本的始祖。P. J. 版本由原创 2022-04-10 13:13:45 · 403 阅读 · 37 评论 -
C++进阶:继承
继承面向对象的三大特性:封装、继承、多态。继承在实际中用的也不是太多,但必须能熟练使用。1. 继承的概念继承机制是面向对象思想中复用代码的一种手段,它能够在原有类的特性的基础上进行扩展。由此产生新的类,称为派生类,原有类称作基类。继承体现了面向对象设计的层次结构,体现了由简单到复杂的认知过程,不同于面向过程只有函数复用,继承是类的设计层面上的复用。1.1 继承的定义对于具有一定联系的一类群体,将其抽象成一类对象后,这些对象必然会具有重复的属性。比如学校中有学生老师两种群体,他们都是属于人这个原创 2022-04-14 11:45:00 · 3939 阅读 · 30 评论 -
C++初阶:stack&queue
Stack&Queue1. 栈和队列的介绍1.1 stack 的介绍栈是一种特殊的线性表,栈只允许在其固定的一端进行插入和删除元素的操作。进行数据插入删除操作的一端被称为栈顶,另一端被称为栈底。栈中的数据元素遵循后进先出的原则。压栈:栈的插入操作被称为压栈,也可以叫做进栈、入栈。出栈:栈的插入操作被称为出栈,或称弹栈。后进先出,先进后出,即 LIFOLIFOLIFO 原则(Last In First Out)。1.2 queue 的介绍队列同样是一种特殊的线性表,和栈相反,队列只允许原创 2022-04-04 13:45:00 · 1182 阅读 · 14 评论 -
C++初阶:list
Listlist (cplusplus.com)list 的介绍list 是能够在序列内任意位置执行常数次插入删除操作的顺序容器,并且它具有双向迭代器。list 容器的实现类似于双向链表,双向链表可以将每个元素存储内存中不同且不相关的地址处。整个链表的顺序由它的节点与其前后节点的链接关联决定。list 容器和 forward_list 容器很像:他们主要区别在于 forward_list 对象是单向链表,所以它只能向前迭代,以换取稍微小点的体积以及更高的效效率。和其他基础地标准顺序容器(数组,原创 2022-03-28 13:15:00 · 3905 阅读 · 58 评论 -
C++初阶:vector
public :gggg这个结构和顺序表结构稍有不同,但本质是一样的。只是将容量和元素个数的变量用指向对应位置的迭代器代替。T * _a;原创 2022-03-22 13:22:40 · 2938 阅读 · 41 评论 -
C++初阶:string
C语言中,字符串以'\0'结尾的一些字符的集合。为操作方便,同时提供了一些关于 str 库函数,但这些库函数和字符串是分离的,并不符合面向对象的思想。string 是 C++ 中管理字符数组的一个类,是 STL中的一个容器,把字符串交由 string 管理,减轻了编程难度。是表示字符串的类。在底层上实际上是的别名。在使用 string 类时,必须包含头文件,以及展开命名空间。原创 2022-03-14 13:58:50 · 2129 阅读 · 74 评论 -
C++初阶:内存管理
C/C++ 内存管理程序启动后会将内存空间划分成这样的几块区域,便于更好的管理。1. C/C++ 内存分布栈区:调用函数时,函数栈帧、函数形参、局部变量都会在栈区上创建。堆区(heap):运行时按需开辟的空间,从堆低向上开辟空间,堆顶向下释放空间。在程序结束后也被操作系统会自动回收。数据段(静态区):系统层面上被称为数据段,语言层面上叫作静态区。存放全局变量,静态数据。代码段(常量区):系统层面上被称为代码段,语言层面上叫作常量区。存放可执行代码、指令一类的和只读常量,这些东西一般不会被原创 2022-02-23 13:00:00 · 1618 阅读 · 70 评论 -
C++初阶:类和对象
/成员变量 char _name [ 20 ];int _age;int _id;//成员方法 void Init(const char * name , int age , int id) {_age = age;_id = id;} };C语言的结构体中只能定义变量,就相当于是个多个变量的集合,操作成员变量的方式也比较繁琐且容易出现错误。C++ 中定义类有两个关键字分别是struct和class,结构体在C++中也升级成了类。原创 2022-01-23 12:00:00 · 1589 阅读 · 47 评论 -
C++初阶:基础语法
文章目录C++基础语法1. 命名空间1.1 命名空间的定义命名空间的嵌套1.2 命名空间的使用名称加域作用限定符`::`引入整个命名空间引入命名空间中的成员2. 输入输出3. 缺省参数3.1 缺省参数的定义3.2 缺省参数的分类注意4. 函数重载4.1 函数重载的定义4.2 名字修饰4.3 extern "C"C++程序调用C的库C程序调用C++的库5. 引用5.1 引用的定义5.2 引用的特性5.3 常引用5.4 引用的应用作函数参数作返回类型5.5 传值传引用效率对比5.6 引用和指针的区别6. 内联函原创 2022-01-13 09:30:00 · 776 阅读 · 4 评论