- 博客(76)
- 收藏
- 关注
原创 vs 写c++一个类的头文件放在改工程下的一个子目录里,include出错
工程名test类名http,子目录:http在主源文件中include这个http 的头文件时,include"./http/http.h"编译出错一定要改成绝对路径。#include "/home/molly1/test/http/http.h""
2021-03-24 21:41:38
322
原创 Mac sublme text 配置c++ 版本opencv4
{"cmd": ["g++", "-Wall", "-Wextra", "${file}", "-o", "${file_path}/${file_base_name}","-I/usr/local/Cellar/opencv/4.3.0/include/opencv4/opencv2/","-I/usr/local/Cellar/opencv/4.3.0/include/opencv4/","/usr/local/Cellar/opencv/4.3.0/lib/libopencv_calib3d.
2021-03-20 12:48:57
142
原创 git简单用法
分为三个地方,第一个是本地的工作目录,实际的文件,第二个是暂缓区,第三个是head,指向最后一次提交的结果,其实还有一个就是远端的仓库服务器1. 首先创建git仓库,可以直接在本地创建文件夹,然后执行git init即可创建一个git的仓库,或者直接在gitub上clone一个仓库,比如git clone https://github.com/dymolly/Primer-C-fifth.git,然后就可以直接进入这个仓库目录;2. 提交更改,或者是在改目录下创建一个文件,或者文件夹,提交这个新的更
2020-11-10 15:06:39
133
转载 C++typedef的详细用法
转自知乎的一段解释:作者:知乎用户链接:https://www.zhihu.com/question/29798061/answer/144423125来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。不太想谈#define, 在题主的例子的这种用法里, 它就是个文本替换工具, 预处理器完成的, 无脑替换, 跟word里的replace一模一样, 不关编译器的事. 我想谈一下typedef.搞懂了c++创始人写的<the design and evol.
2020-06-25 16:11:30
193
原创 235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释:...
2020-06-25 08:10:05
142
原创 抽象基类ABC
abstract base class(ABC)就是基类是抽象类,那么什么样的类才是抽象类,是要有纯虚函数的类纯虚函数的声明:virtual void Area() =0;,该函数Area就是一个纯虚函数一。为什么要用纯虚函数比如说我们想要定义圆和椭圆,他们包括圆,椭圆的中心坐标,椭圆的长短轴,两者的面积,移动方法等,就是说他俩有一些共性,但是像面积他俩都要求,但是方法又不一样,我们可以说圆是椭圆的特殊,但是计算方式却是不一样,所以我们可以抽象出来一个抽象基类,将他俩相同的放进去,包括求面积
2020-06-24 21:08:20
286
原创 派生类-构造函数
在hpp头文件中,声明构造函数中,必须为新增的数据成员和基类的数据成员提供数据,即每一个形参代表一个成员派生类声明构造函数入下,其中r是给新增的数据,后面是基类的成员。在cpp文件定义的时候,必须创建基类的对象,即如果不是默认的对象,则必须显示的创建基类的对象,将数据传递给基类的对象如下图:Tabletennisplaye是基类,必须要给他穿入数据,然后再进入构造函数题,给新的成员rating提供数据(其实没有hpp,我们是直接可以声明并且定义的,所以一定要给基类创建对象).
2020-06-24 18:39:34
851
原创 虚函数
一。首先说一下,虚函数咋用的虚函数是在基类中,对成员函数进行声明的,当然构造函数和友元函数都不可以声明为虚函数声明要加virtual,但是定义的时候不用加virtual,在派生类的声明中可加可不加,最好加上吧。virtual void name()二。为什么使用虚函数对呀,为什么呢如果我们不使用虚函数比如一个基类class father,其派生类class son那么一个基类的指针或者引用father *f /father &f,当他指向的是一个派生..
2020-06-24 17:03:01
216
原创 存储持续性、作用域、链接性
一。存储持续性:数据保留在内存的时间分为4个不同的存储链接性方案:(1)自动存储持续性:在函数内定义的变量以及其参数,在程序执行的时候创建,在函数结束之后内存被释放(2)静态存储持续性:在函数外定义的变量或者使用static定义的变量,他们在整个运行的过程中都存在,不会因为调用该函数,而进行初始化,他们的值是一直被“累加的”(3)线程存储持续性:多线程并行时设置的(4)动态存储持续性:由new来进行动态的分配内存,分配的内存一直在,直到delete释放,有时被称为自由存储或堆二。作用
2020-06-24 12:39:42
156
原创 面试题 05.07. 配对交换
配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。示例1:输入:num = 2(或者0b10)输出 1 (或者 0b01)示例2:输入:num = 3输出:3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/exchange-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:拿出整数的奇位和偶数位,然后奇数位...
2020-06-24 10:29:30
167
原创 1399. 统计最大组的数目
给你一个整数 n。请你先求出从 1到 n 的每个整数 10 进制表示下的数位和(每一位上的数字相加),然后把数位和相等的数字放到同一个组中。请你统计每个组中的数字数目,并返回数字数目并列最多的组有多少个。示例 1:输入:n = 13输出:4解释:总共有 9 个组,将 1 到 13 按数位求和后这些组分别是:[1,10],[2,11],[3,12],[4,13],[5],[6],[7],[8],[9]。总共有 4 个组拥有的数字并列最多。示例 2:输入:n = 2输出:2...
2020-06-24 09:54:09
265
原创 剑指 Offer 64. 求1+2+…+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出:6示例 2:输入: n = 9输出:45来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qiu-12n-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:阿欧,我会的方法他都不让用,发现这种题,一般就是用...
2020-06-24 08:56:45
104
原创 用队列实现栈
使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。你可以使用 list 或者 deque(双端队列)来模拟一个队列, 只要是标准的队列操作即可。你可以假设所有操作都是有效的(例如, 对...
2020-06-24 08:24:16
193
原创 this指针
this指针用来在两个对象进行比较的时候,返回调用该方法的对象eg.类dog有一个数据成员为age类有一个成员函数是这样的dog & compare(dog & d){ if(d.age>age) return d; else return ?}就是参数是该类的对象,返回值也是该类的对象else我们该返回什么,我们要返回调用该函数的对象,但是他这里没有名字egdog d1,d2;d1....
2020-06-23 18:00:53
212
原创 类--内联函数--构造函数--成员函数和const
在头文件中叫做类的声明一。内联函数在类声明中一般要声明成员函数,如果声明的时候直接定义了该函数,则该函数被自动为内联函数如果定义和声明分开了,但也是在头文件中定义了该函数,并且用inline,也是内联函数二。构造函数一般情况下,我们都是使用对象来调用方法但是构造函数不能用对象来调用,因为对象是由构造函数来创建的,在构造函数创建出对象来之前,对象是不存在,都不存在,还怎么调用,是人家构造函数创建的对象。三。成员函数和const如果说对象我们写出const类型的,即要求该对象不能
2020-06-23 17:42:48
356
1
原创 剑指 Offer 24. 反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法一。我也不知道当时咋想..
2020-06-23 17:02:14
115
原创 剑指 Offer 54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 /1输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro...
2020-06-23 15:25:47
102
原创 剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTai..
2020-06-23 13:43:36
224
原创 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false示例 2:输入: s = "abc"输出: true0 <= len(s) <= 100 如果你不使用额外的数据结构,会很加分。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/is-unique-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方...
2020-06-23 11:31:42
234
原创 16.07. 最大数值
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。示例:输入: a = 1, b = 2输出: 2运用数学公式:ma x = ((a+b)+|a-b|)/2;但是这里要考虑,a+b整形范围内可能会溢出,所以将其转换成longint maximum(int a, int b) { long c = a; long d = b; return int(((c+d)+abs(c-d))/2).
2020-06-23 10:56:58
146
原创 191. 位1的个数
编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量)。输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 '1'。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-1-bits著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。..
2020-06-23 10:11:06
111
原创 函数模板
为了实现泛化template<typename T>不能变的是template<typename> ,或者将typename换成classT自己随便起名字
2020-06-22 18:55:16
88
原创 引用变量
引用就是一个变量的别名,声明:int a = 0;int &b = a;b就是a的引用,a和b指向的内存时同一个地址,b可以修改变量的值一。主要的用途是将引用变量作为函数的参数传递,为什么呢?(1)对于函数要改变变量的值的情况下,函数进行值传递是不能被改变的,只是创建了一个临时变量,拷贝了原函数的变量值,并不能改变原函数变量的值,可以使用指针进行传递,还有一种方法就是传递引用,也可以用来修改原函数变量的值egvoid change1(int &a,int &am
2020-06-22 16:32:11
2535
原创 内联函数
即短小代码的函数直接替换,而不用在跳转到调用函数的位置,然后再跳转过来,浪费时间,在每一次调用函数时,直接把代码也调用过去,内联就是和其他的程序代码内部联系起来嘛,但是一个代价就是需要更多的内存,以空间换时间。和C语言中的宏类似eg inline int sum(int a, int b){return a+b;}...
2020-06-22 14:12:42
182
原创 函数指针
函数指针指向的是函数的地址一。首先声明一个指针,该指针的类型返回值参数和原函数一样,即只要将原函数的名字,换成你想要的指针的变量名即可,eg:原函数:const double *f(const double *,int n);声明指向该函数的指针:const double *(*p)(const double *,int);也就是用(*p)替换函数名,表明是指向该函数类型地址的指针二。初始化const double *(*p)(const double *,int) =
2020-06-22 12:42:26
152
原创 const限定符
在创建符号常量的时候,使用const来时声明的时候,应该在声明的时候进行初始化,初始化之后就不能再修改了和#define作用一样,但是比他好,因为(1)指出了常量的类型:const int Mouth= 2;(2)可以使用c++的作用域规则将常量限制在某个函数或者范围内(3)可以将constin应用于更复杂的类型,如数组等。...
2020-06-22 11:29:46
80
原创 数组
静态联编:只能在定义的时候进行初始化,此后就不能初始化了,也不能讲另一个数组赋值给另一个数组,可以通过数组下标进行赋值动态联编:上面是静态的创建数组,在编译的时候给数组分配内存,动态联编是在运行的时候才给数组分配内存,使用new来创建,用指针指向被创建数组的内存地址eg: int *p = new int[4]; 这里也必须写明所需要的数组的大小,但是这个大小不一定是常量,可以是变量,可以用户来输入这个变量的大小eg .int *p = new int[size]. 只是在...
2020-06-22 11:29:27
99
原创 指针
一。首先对指针的第一印象就是他指向的是一个地址,如下面所示:int a = 3;int *p = &a;这样表示的话,p就是表示a这个变量所在的地址,也就是换了一个名称来表明这个地址,其实意义不大指针的真正的用武之地是在于,在运行阶段分配未命名的内存以存储值,这种情况下,就只能通过指针来访问内存,在c语言中,库函数malloc()来分配内存,在c++ 仍可以使用该方法,但是更好的方法是使用new运算符来分配内存。eg. int *p = new int;new是在程序...
2020-06-22 11:29:15
129
原创 指针与const
很微妙一个变量声明为const就表明是常量,不能被修改了(注:static静态变量不是常量,是可以被修改的,他只是在内存位置不变,在函数调用之前和之后不变,不会被释放)两种指针和const之间的用法一。int a = 10const int * p = &a;p指向的是一个const int (这里就是 10),也就是说*p的值是const int 类型的,也就是常量,*p是常量,那么我们就不能用p来修改这个值,即*p=20,是错误的,但是a并不是常量,可以通过a 来修改 .
2020-06-22 11:28:34
244
1
原创 递减栈
739. 每日温度请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用0 来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是[1, 30000]。每个气温的值的均为华氏度,都是在[30, 100]范围内的整数。栈中村的是列表...
2020-06-11 23:04:01
177
原创 Mac 通过ssh和本地虚拟机传文件,mac连接不上虚拟机,但是虚拟机可以连上,以及scp传文件问题
通过找各种方法,终于发现要把虚拟机的连接方式改一下,桥连接ssh 虚拟机用户名@虚拟机ip传文件:scp 本地文件地址 虚拟机用户名@虚拟机ip:虚拟机要放文件的地址会出现not a regular file: 就用scp -r本地文件地址 虚拟机用户名@虚拟机ip:虚拟机要放文件的地址,因为这是文件夹,而不是文件出现Permission denied:在虚拟机的终端:sudo chmod 777 文件名...
2020-06-07 15:49:31
674
原创 makefile
makefile就是将在命令行写的命令放在了名叫makefile的文件里c++的运行过程:预处理——编译——汇编——链接预处理:g++ -E hello.cpp -o hello.i -E预处理的指令,-o是输出的指令编译: g++ -S hello.o -o hello.S 汇编: g++ -c hello.S -o hello.o. .o是目标文件链接:g++ hello.o -o hello 一...
2020-06-05 14:15:26
145
原创 Mac编译c++命令行参数
使用终端对cpp进行编译,运行在main函数里面,有两个参数,#include<iostream>using namespace std;int main(int argc,char *argv[]){ for(int i=0;i<argc;i++) cout<<"Argument"<<i<<" is"<<argv[i]<<endl; return 0;}argc是参数的个数,会自动计算argh[
2020-06-05 09:01:53
574
原创 优先队列-347. 前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/top-k-frequent-elements著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:主要是用了堆,用优先队列实现了小根...
2020-06-04 22:14:42
117
原创 优先队列
引的某个文章的,不知道是哪个了。。。。普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。首先要包含头文件#include<queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。优先队列具有队列的所有特性,包括队列的基本操作,只是在这基础上添加.
2020-06-04 22:06:48
129
原创 二叉搜索树
1038. 从二叉搜索树到更大和树给出二叉 搜索 树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node的新值等于原树中大于或等于node.val的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。思路:逆中序遍历,一个全局变量的累加,也就是右子树的累加的最少,根结点次之,左子树最多,因为比他大的最多,所以放在后面访问他class Solution {...
2020-06-03 07:42:15
219
原创 c++ 赋值运算符重载和复制构造函数
重载赋值运算符:对象之间赋值,所以要重载= //str1 = str2;//赋值运算符,如果没有重载的话,会使他们指向同一个内存空间复制构造函数:一个对象使用另一个对象来初始化就需要复制构造函数,当然还有其他的功能时也需要 String str2(str1);//复制构造函数...
2020-06-02 12:08:08
408
原创 .format(str(torch._C._cuda_getDriverVersion()))) AssertionError:
Traceback (most recent call last): File "train_net.py", line 226, in <module> im_data = im_data.cuda() File "/usr/local/lib/python2.7/dist-packages/torch/cuda/__init__.py", line 192, in _lazy_init _check_driver() File "/usr/local/lib/py...
2020-05-28 08:41:16
471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人