C++
文章平均质量分 79
C++学习和实践笔记
猎猎长风
士不可以不弘毅,任重而道远。
展开
-
【C++高阶】3.2 vector容器
c++ vector 容器学习,vector数据结构和数组非常相似,也称为单端数组。原创 2022-08-03 11:51:44 · 215 阅读 · 0 评论 -
【C++高阶】3.1 string容器
string是C++风格的字符串,而string本质上是一个类。string类内部封装了很多成员方法;例如查找find,拷贝copy,删除delete替换replace,插入insert;string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。......转载 2022-07-20 10:30:05 · 175 阅读 · 0 评论 -
【C++高阶】2. STL解析
长久以来,软件界一直希望建立一种可重复利用的东西;C++的面向对象和泛型编程思想,目的就是复用性的提升;大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作;为了建立数据结构和算法的一套标准,诞生了STL。STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。容器: 置物之所也。STL容器就是将运用最广泛的一些数据结构实现出来;常用的数据结构:数组, 链表,树, 栈, 队列, 集合, 映射表 等;这些容器分为序列式容器和关联式容器两种:算法: 问题之解法也原创 2022-07-04 11:22:16 · 149 阅读 · 0 评论 -
【C++高阶】1.3 模板——类模板
类模板作用:建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表。语法:解释:template — 声明创建模板;typename — 表面其后面的符号是一种数据类型,可以用class代替;T — 通用的数据类型,名称可以替换,通常为大写字母。示例:总结:类模板和函数模板语法相似,在声明模板template后面加类,此类称为类模板。类模板与函数模板区别主要有两点:示例:总结:类模板中成员函数和普通类中成员函数创建时机是有区别的:示例:总结:类模板中的成员函数并不原创 2022-07-01 20:41:06 · 123 阅读 · 0 评论 -
【LibTorch】C++中部署TorchScript模型与Tensor保存/加载
下载cuda版本为11.3的安装包并解压即完成安装:如果需要cpu版本的安装包按照上面注释方法替换即可。保存函数:2.2 C++加载tensor并调用模型首先需要将PyTorch模型转换为C++支持的TorchScript模型,具体步骤以后找个时间再写一篇笔记,这边先略过。C++调用TorchScript模型代码:3. 编译执行C++推理用例3.1 编写CMakeLists需要安装cuda和cudnn才能进行cmake;创建文件 ,写入:3.2 编译并执行用例在同级目录下执行命令:输出:.原创 2022-06-30 21:13:17 · 1564 阅读 · 2 评论 -
【C++高阶】1.1-1.2 模板——函数模板
本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层的使用模板就是建立通用的模具,大大提高复用性。例如生活中的模板,一寸照片模板:PPT模板:模板的特点:函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法:解释:template — 声明创建模板;typename — 表面其后面的符号是一种数据类型,可以用class代替;T — 通用的数据类型,名称可以替换,通常为大写字母。示例:总结:注意事项:示例:1.2.3转载 2022-06-24 10:37:26 · 127 阅读 · 0 评论 -
【C++核心】5. 文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化。C++中对文件操作需要包含头文件 < fstream >。文件类型分为两种:操作文件的三大类:写文件步骤如下:文件打开方式:注意: 文件打开方式可以配合使用,利用 " | " 操作符。例如: 用二进制方式写文件 。示例:总结:读文件与写文件步骤相似,但是读取方式相对于比较多。读文件步骤如下:示例:总结:............原创 2022-06-22 10:40:51 · 111 阅读 · 0 评论 -
【C++核心】4.7 类和对象——多态
多态是C++面向对象三大特性之一多态分为两类:静态多态和动态多态区别:下面通过案例学习多态:总结:多态满足条件:多态使用条件:重写:函数返回值类型 函数名 参数列表 完全一致称为重写。案例描述:分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类。多态的优点:示例:..................原创 2022-06-16 11:04:35 · 110 阅读 · 0 评论 -
【C++核心】4.6 类和对象——继承
继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:观察发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候就可以考虑利用继承的技术,减少重复代码。例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同。接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处。普通实现:继承实现:总结:继承的好处:可以减少重复的代码class A : public B;A 类称为子类 或 派生类B 类称为父类原创 2022-06-15 11:04:48 · 122 阅读 · 0 评论 -
【C++核心】4.5 类和对象——运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型作用: 实现两个自定义数据类型相加的运算。示例:4.5.2 左移运算符重载作用: 可以输出自定义数据类型示例:4.5.3 递增运算符重载作用: 通过重载递增运算符,实现自己的整型数据示例:4.5.4 赋值运算符重载c++编译器至少给一个类添加4个函数如果类中有属性指向堆区,做赋值操作时也会出现深浅拷贝问题。示例:4.5.5 关系运算符重载作用: 重载关系运算符,可以让两个自定义类型对象进行对比操作。示例原创 2022-06-13 19:29:39 · 110 阅读 · 0 评论 -
【C++核心】4.4 类和对象——友元
生活中你的家有客厅(Public),有你的卧室(Private)。客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去。但是你也可以允许你的好基友进去。在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。友元的目的就是让一个函数或者类访问另一个类中私有成员。友元的关键字为 friend友元的三种实现:示例:4.4.2 类做友元示例:4.4.3 成员函数做友元示例:......原创 2022-06-13 11:39:27 · 113 阅读 · 0 评论 -
【C++核心】4.3 类和对象——C++对象模型和this指针
在C++中,类内的成员变量和成员函数分开存储;只有非静态成员变量才属于类的对象上。示例:4.3.2 this指针概念通过4.3.1我们知道在C++中成员变量和成员函数是分开存储的,每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码。那么问题是:这一块代码是如何区分那个对象调用自己的呢?c++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象。this指针是隐含每一个非静态成员函数内的一种指针。this指针不需要定义,直接使用即可。原创 2022-06-12 20:45:26 · 105 阅读 · 0 评论 -
【C++核心】4.2 类和对象——对象的初始化和清理
对象的初始化和清理也是两个非常重要的安全问题:一个对象或者变量没有初始状态,对其使用后果是未知的;同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供。编译器提供的构造函数和析构函数是空实现。构造函数语法:析构函数语法: 示例:.....................原创 2022-06-10 10:48:12 · 132 阅读 · 0 评论 -
【C++核心】4.1 类和对象——封装
C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如:人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌…车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调…具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类封装是C++面向对象三大特性之一封装的意义:封装意义一:在设计类的时候,属性和行为写在一起,表现事物语法: 示例1: 设计一个圆类,求圆的周长示例代码:**示例2:**设计一个学生类,属原创 2022-06-09 21:12:22 · 124 阅读 · 0 评论 -
【C++核心】3. 函数提高
在C++中,函数的形参列表中的形参是可以有默认值的。语法:示例:3.2 函数占位参数C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置语法: 在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术示例:3.3 函数重载3.3.1 函数重载概述作用: 函数名可以相同,提高复用性函数重载满足条件:注意: 函数的返回值不可以作为函数重载的条件示例:3.3.2 函数重载注意事项引用作为重载条件函数重载碰到函数默认参数示例:......转载 2022-06-09 20:11:26 · 100 阅读 · 0 评论 -
【C++核心】2. 引用
作用: 给变量起别名语法: 示例:2.2 引用注意事项引用必须初始化引用在初始化后,不可以改变示例:2.3 引用做函数参数作用: 函数传参时,可以利用引用的技术让形参修饰实参优点: 可以简化指针修改实参示例:2.4 引用做函数返回值作用:引用是可以作为函数的返回值存在的注意:不要返回局部变量引用用法:函数调用作为左值示例:2.5 引用的本质本质:引用的本质在c++内部实现是一个指针常量.讲解示例:结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译原创 2022-06-08 21:20:33 · 90 阅读 · 0 评论 -
【C++核心】1. 内存分区模型
阶段简介:本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。C++程序在执行时,将内存大方向划分为4个区域内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域代码区:存放 CPU 执行的机器指令代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令全局区:全局变量和静态变量存放在此.全局区还包含了常量区, 字符串常原创 2022-06-07 11:41:02 · 76 阅读 · 0 评论 -
【C++基础】8. 结构体
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型语法:通过结构体创建变量的方式有三种:示例:8.3 结构体数组作用: 将自定义的结构体放入到数组中方便维护语法:示例:8.4 结构体指针作用: 通过指针访问结构体中的成员示例:...............原创 2022-06-04 16:44:54 · 78 阅读 · 0 评论 -
【C++基础】7. 指针
指针的作用: 可以通过指针间接访问内存指针变量定义语法: 示例:指针变量和普通变量的区别提问:指针也是种数据类型,那么这种数据类型占用多少内存空间?示例:7.4 空指针和野指针空指针:指针变量指向内存中编号为0的空间**用途:**初始化指针变量**注意:**空指针指向的内存是不可以访问的示例1:空指针野指针:指针变量指向非法的内存空间示例2:野指针...............转载 2022-06-04 00:07:43 · 73 阅读 · 0 评论 -
【C++基础】6. 函数
作用: 将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式语法:返回值类型 :一个函数可以返回一个值。在函数定义中函数名:给函数起个名称参数列表:使用该函数时,传入的数据函数体语句:花括号内的代码,函数内需要执行的语句return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据示例: 定义一个加法函数,实现两个数相加6.3 函原创 2022-06-01 22:39:52 · 96 阅读 · 0 评论 -
【C++基础】5. 数组
文章目录5.1 概述5.2 一维数组5.2.1 一维数组定义方式5.2.2 一维数组数组名5.2.3 冒泡排序5.1 概述所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1: 数组中的每个数据元素都是相同的数据类型特点2: 数组是由连续的内存位置组成的5.2 一维数组5.2.1 一维数组定义方式一维数组定义的三种方式:数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};转载 2022-05-29 14:15:52 · 160 阅读 · 0 评论 -
【C++基础】4. 程序流程结构
文章目录4.1 选择结构4.1.1 if 语句C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码4.1 选择结构4.1.1 if 语句作用: 执行满足条件的语句if语句的三种形式单行格式if语句多行格式if语句多条件的if语句单行格式if语句:if(条件){ 条件满足执行的语句 }示例:int main() {原创 2022-05-25 16:35:01 · 145 阅读 · 0 评论 -
【C++基础】3. 运算符
文章目录3.1 算术运算符3.2 赋值运算符3.3 比较运算符3.4 逻辑运算符运算符作用: 用于执行代码的运算本章我们主要讲解以下几类运算符:运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较,并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值3.1 算术运算符作用:用于处理四则运算算术运算符包括以下符号:运算符术语示例结果+正号+33-负号原创 2022-05-24 11:10:16 · 140 阅读 · 0 评论 -
【C++基础】2. 数据类型
文章目录2.1 整型2.2 sizeof关键字2.3 实型(浮点型)C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存2.1 整型作用:整型变量表示的是整数类型的数据C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:数据类型占用空间取值范围short(短整型)2字节(-2^15 ~ 2^15-1)int(整型)4字节(-2^31 ~ 2^31-1)long(长整形)Windows为4字节,Linux为原创 2022-05-22 16:40:12 · 549 阅读 · 0 评论 -
【C++基础】1. 基本语法
1.1 Hello world输入:#include<iostream>using namespace std;int main() { cout << "Hello world" << endl; system("pause"); return 0;}输出:Hello world1.2 注释作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码两种格式单行注释:// 描述信息通常放在一行代码的上方,或者一条语句的原创 2022-05-22 16:33:41 · 121 阅读 · 0 评论