- 博客(35)
- 收藏
- 关注
原创 C++ STL 容器使用心得
1.undered_set s1 集合的使用2.集合的特点,元素之间不重复3.使用一些现成的容器可以快速提高你的开发效率
2021-01-12 09:53:35 173
原创 C++ 学习轨迹之并查集
1.初始化(根集合)、合并(秩并)、查、压缩路径2.应用:判断两个点是否连通3.没有用到别的树或者图这样的数据结构,而仅仅是用到了数组,用数组来模拟树------妙啊
2021-01-11 23:03:25 173
原创 C++学习轨迹之多态
1.多态即对于重载的函数即同名,编译器可以根据所传入的参数动态地选择确切的方法函数,而无需人为强制(if else)确定,实现统一调用。
2021-01-07 18:55:00 162
原创 对象之间的关系
1.父子(继承)—笨重(耦合度最高)2.朋友(组合)—灵活,即A类对象是B类对象的一个成员,即B拥有A3.情人(依赖)—(耦合度最低)A类对象作为B类成员函数的一个参数传入;可以发生一个有趣的现象—B类可以盗用A类的方法名假装B类自己也有这种方法,即先是A作为参数传入,然后是B作为参数传入A的方法---------双向依赖。...
2021-01-07 18:51:17 281
原创 C++学习轨迹之再谈抽象类和接口类
1.抽象类它是一个特殊的类,来源于将所有类相同但又无法确定的属性和方法抽取出来归为一个类中,具体实现由其继承的子类实现,比如睡觉这个行为,是普遍的,但具体实现却不能统一实现,因为会由具体个体不同实现的方式不同。JAVA用abstract修饰来表示抽象类和抽象方法(未具体实现的方法不确定),C++用虚函数实现即只要该类中还有虚函数,那么该类就是一个抽象类,即不是一个完整的类。2.接口是对行为的抽象,比如吃,C++中通过抽象类实现,它是一个概念;JAVA中通过interface实现。3.所以一个类只能继承一
2021-01-06 17:57:46 64
原创 C++学习轨迹之STL map的四种插入方法
1.mapname.insert(pair<int , string>(2,“ffr”))2.mapname.insert<make_pair<int , sting>(3,“frfgr”))3.mapname.insert(map<int,string>::(4,“rger”)4.mapname[5] = “rgfrgrgr”;
2021-01-06 15:15:47 124
原创 g++ 编译选项
1.g++ -o:指定生成可执行文件的名称。使用方法为:g++ -o afile file.cpp file.h … (可执行文件不可与待编译或链接文件同名,否则会生成相应可执行文件且覆盖原编译或链接文件),如果不使用-o选项,则会生成默认可执行文件a.out2.g++ -c:只编译不链接,生成目标文件。3.g++ -g:添加gdb调试选项...
2020-12-16 15:30:57 190
原创 模拟退火算法---原理学习
1.原理:来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。2.该算法目的是,打乱原有秩序,有能力跳出局部最优解,有概率达到全局最优解,理论上算法具有概率的全局优化性能。3.算法实现:模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。用
2020-12-13 20:48:28 1110
原创 JSON
1.JSON是一种数据交换语言,可以完全独立于编程语言的文本格式来存储和表示数据,是一种轻量级的数据交换格式,它相当于一个桥梁。2.以JSON方式进行传输的数据叫JSON数据,百分之九十的数据都是通过JSON的方式传输3.因此,我们需要对JSON数据进行解析。...
2020-12-13 16:13:21 73
原创 C++ 学习轨迹之extern C作用
1.extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。2.这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写
2020-12-12 22:02:02 102
原创 C++学习之 动态链接库
1.动态链接库文件扩展名dll2.实现共享函数库的一种方式3.使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 文件中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。使用动态链接库可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。4.动态链接库通常都是不能直接运行的,只有在其他模块调用动态链接库中的函数时,它才发挥作用。动态链接库是为了实现代码的重用是出现的,它们都是一些独立的文件,其中包含能被可执行程序或其他DLL调用来完成某些工作的
2020-12-12 21:49:39 418
原创 vscode 使用小技巧
1.要打开一个文件夹,才能实现一些功能2.如果出现code is runnning //说明程序出现了阻塞,可以右键点击running stop
2020-12-12 19:51:37 154
原创 powershell命令
1.用powershell编译c++程序:g++ -o 可执行文件名 源程序名2.用powershell执行该可执行文件:.\可执行文件名.exe
2020-12-12 19:41:18 113
原创 C++ 学习轨迹之常量
1.我们可以将一些在程序运行过程中确保不会变或者不想让它变,保证其安全,将其设置为常量。这样在编译过程中,一旦值发生变化,编译器会报错。2.C用define来设置常量,C++可以通过关键字const来修饰常量...
2020-12-12 16:36:10 81
原创 C++学习轨迹之重载
1.重载即在同一个作用域中使用相同的名字,根据它们参数或者实现方式不同,编译器自动调用最合适的那一个。例如,我们可以定义两个构造函数,一个是如果没有初始化,则使用默认值,否则调用另外一个函数,即根据需求灵活选择,这不就是多态的功能之一吗2.分为函数重载和运算符重载3.构造函数没有返回值,但不要忘记在实现的时候加上类域4.函数重载解决了函数命名问题,而运算符重载可以让我们重新定义编译器预定义的运算符含义和功能,就像typedef可以重新定义数据类型名称以及struct可以重新定义我们自己的结构体一般,C
2020-12-12 16:35:30 74
原创 C++ 学习轨迹之函数声明的三种方式
1.函数声明的三种方式:一是传统的函数声明方式;二是 char (*func_name)(int),即声明一个函数指针,该函数的返回类型是char型,参数类型是整型;三是typedef char (*func_name)(int),即重新定义一个类型 func_name,func_name func1,此时func1等价于方法二的func_name2.从这个例子我了解到函数返回类型和参数类型可以确定一个函数类型,函数名其实就是函数的起始入口地址。...
2020-12-11 20:41:12 1766
原创 算法学习轨迹之分支界限法
1.分支限界法与回溯法的不同(1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。(2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。2.算法步骤1)按宽度优先策略遍历解空间树2)在遍历过程中,对处理的每个结点i,根据界限函数,估计沿该结点向下搜索所可能达到的完全解的目标函数的可能取值范围—界限bound(i)=[d
2020-10-23 22:00:05 93
原创 B树、B+树理解
一.B树1.含义:是一棵多路平衡查找树,当m等于2时就是平衡二叉树.需要指定它的阶数,即每个节点最多可以有多少个子节点,若m=2,即二叉平衡查找树.2.每个节点都存储了相应的关键字key和value,将这一对键值对称为一个记录.当我们将其作为一种索引结构时,相应的value即为硬盘的逻辑地址.要知道在数据库中的索引技术都是采用的Bjia树.3.规则:该节点的键值对必须满足小于等于m-1(m叉树),否则就要对其进行拆分拆分规则是中间的提取到父节点,两边单独构成一个节点.尽量使高度最小.关键字都是按
2020-10-23 21:47:14 950
原创 C++学习轨迹之优先队列
一.定义1.相较于普通队列先进先出的数据结构,优先队列,会给每个元素设定一个权值,查找时应当选择权值最高的,同时删除时应当也该选择权值最高的元素,而不是先进先出。优先队列具有队列的所有特性,包括队列的基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的。2.首先要包含头文件#include queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。3.升序队列,小顶堆 priority_queue <int,vector&
2020-10-20 09:56:14 138
原创 C++学习轨迹之文件操作
一.输入输出流基本含义1.C++中将数据从一个对象到另一个对象的传递抽象为“流”,流分为输入流和输出流,数据的输入输出都是通过I/O流来实现的,将执行I/O操作的类体系称为流类库。2.C++提供了强大的流类库,有三套实现I/O的方法:第一套是和C语言兼容的I/O库函数;第二套是I/O流类库,在linux适合第二套;第三套是针对Windows程序设计提供的类库。3.C++通过重载运算符<<和>>支持类和对象的输入输出,是以字节流的形式实现,具有方向性。4.C++ 专门内置了一些
2020-10-16 22:04:46 228
原创 机器学习轨迹
一.传统机器学习1.KNN算法二.深度学习1.联邦学习:目的是为了解决数据孤岛,在不共享数据的前提下,实现数据的融合,充分利用大数据,再通过机器学习或者数据挖掘等技术将这些数据的潜在价值最大化2.迁移学习:是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。可以提升效率,有些类似C++的代码重用的赶脚...
2020-10-15 19:48:27 420
原创 算法学习轨迹之动态规划
1.关键词:运筹学–最优化;穷举搜索即满足条件的所有可行解;初始可行解即初值问题;换基运算即状态转移方程;结果便是最优可行解。2.两个方向:自下而上迭代和自上而下递归,后者需要画出递归树3.核心:找状态以及状态之间的转移关系;找重叠子问题...
2020-10-13 19:02:13 282
原创 算法学习之渐进复杂度的分析
1.T(n)和f(n)之间的关系:将T(n)转换为f(n),即T(n)<=f(n),后者是前者的上限,若有T(n)<=cf(n),则T(n)=O(f(n))2.分为常数阶时间复杂度即O(1);多项式阶即O(n^5);指数阶和对数阶3.运算规则:O(f)+O(g)=O(max(f,g))O(f)+O(g)=O(f+g)O(f)O(g)=O(fg)O(f)=f4.求解递归式的三种方法:代入法即先猜测,再用数学归纳法验证用递归树求解用主方法...
2020-10-12 21:50:08 781
原创 C++ 学习轨迹之 STL
一.STL含义1.STL指的是标准模板库,是一些算法和组件的集合,目的是不用重新开发,可以用现成的组件。2.其本质是一些容器的集合,包括set、map、list、stack、map、vector、queue、iterator。3.STL 是一种泛型编程,即关注算法本身,区别于面向对象关注于数据方面,它们的共同点是抽象和构造可重用代码。4.模板使得算法独立于数据类型;而迭代器使得算法独立于容器类型,迭代器用作算法和容器之间的桥梁,几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器
2020-10-12 21:05:52 156
原创 C++ 学习轨迹之静态数据成员和成员函数
1.静态数据成员:即类属性,区别于非静态成员的实例属性,类属性为所有对象共享,值相同;调用方式是(类名::标识符);注意全局初始化的方式,即可以在主函数前即对象生成前通过全局变量的方式进行初始化2.静态成员函数功能和静态数据成员功能类似,即在创建对象前调用该成员函数,调用方式和静态数据成员一样;静态成员函数整个类,同一个所有对象共享;注意静态成员函数可以直接调用静态成员变量和函数成员,但在调用非静态成员变量时必须通过对象如 A a...
2020-10-09 20:16:13 62
原创 Linux 常用命令
系列文章目录一、linux常用命令文章目录前言1.要使用命令必须先启动Shell程序,ctrl+alt+t 启动Shell程序2.登陆者分为普通用户和root用户,前者提示符时¥,后者是#3.Shell命令严格区分大小写4.Shell命令格式:由命令名和多个选项以及参数组成的命令行;各部分之间用空格隔开;选项以-连字符作为前缀表示项的开始;一个命令可能有多个选项组成;命令名 -选项名 参数名;如ls -l5.文件以及目录显示的不同颜色代表不同的含义;黑色(普通..
2020-09-30 15:18:09 76
原创 数据科学浅谈
一.数据科学含义1.数据科学核心任务是从数据中抽取信息,发现知识,提炼和挖掘价值。2.数据科学是以各类数据作为研究对象,对数据进行分析和挖掘。3.大数据特点:数据量大、数据种类丰富、速度快。4.数据中蕴含着规律,这就是大数据的价值所在,而发掘这些规律和价值的过程需要一些数据分析和处理的方法和技术。5.数据就是一种原料,大数据对于没有原料加工和处理能力的公司而言,无疑就是一堆垃圾,而对于大数据科学家而言,可能就是变废为宝。6.对于数据科学家而言,需要数据可视化、数据挖掘、统计分析、机器学习等数学基
2020-09-30 12:59:21 1290
原创 C++ 学习轨迹之面向接口和抽象类
一.面向接口的含义1.所谓接口就是指一系列的函数的集合,这些函数提供了一系列功能,然后通过继承的方式分配给需要的类对象,而这些类对象拥有这些功能。2.面向对象即将数据和算法即数据处理方法封装在一起,所有对象的都是通过类来描述,但是不是所有类都具有描述对象的功能,比如抽象类。3.在接口中,所有方法都是抽象的,接口是抽象的变体。二.面向接口的实现1.java 中有interface关键字实现接口,而C++ 只能通过虚函数或者纯虚函数的方式来实现接口,然后子类继承这个接口类并定义虚函数的功能即可2.最
2020-09-29 21:25:40 217
原创 C++学习轨迹之命名空间
1.using name space std;//含义是可以使用标准库中的函数,所以如果和标准库中的函数名相同,需要在前面标明是哪个空间的函数,否则会发生函数重载二义性。2.反之,如果不使用using namespace std;这条预编译指令,那么再使用标准库中的函数或变量,须std::cout类似这样3.若预编译指令放在最前面,则全局有效,若放在函数定义中,则在该函数中有效。...
2020-09-28 17:27:37 74
原创 C++ 学习轨迹之 const修饰的类成员
一.常成员函数1.形式:int print (int a ,int b) const;2.如果将一个对象说明为常对象,那么通过该对象只能调用它的常成员函数(唯一接口)3.const关键字可以用于对重载函数的区分4.const person p(10,20);//定义为常对象p,对于类中有同名函数,其中有一个为常函数,则普通对象会默认调用非常函数,而常对象则会默认调用常函数。5.在适当的地方即无需改变对象状态的成员函数使用const关键字可以提高程序质量。二.常数据成员1.任何函数均不能对该成员
2020-09-28 15:47:49 148
原创 C++学习轨迹之虚函数学习心得
标题C++学习轨迹之虚函数学习一:虚函数含义1.用Virtual 关键字修饰2.目的是实现多态性3.通俗来讲就是不同的对象接收相同消息或者命令时会有不同的反应或动作,很自然,每个人看到相同的物体或场景,都会有不同的反应和感受,这就是人的多样性。4.系统会根据不同对象或者不同参数列表调用不同的同名函数5.动态多态(运行时)和静态多态(编译时),静态多态实现形式(函数重载和运算符重载),动态多态(必须用虚函数实现)6.动态多态主要应用在当父类指针指向子类对象时,对象调用的函数不是父类的函数而是子类
2020-09-25 19:41:50 325
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人