自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

第一视角

菜鸟进阶阶段

  • 博客(47)
  • 收藏
  • 关注

原创 mac下cmake生成Xcode工程

第一步:打开CMake打开以后会看到这样,上面红色部分,可以自主选择路径,也可自己输入路径(CMake文件路径)及CMakeLists.txt文件的路径,不用加CMakeLists.txt文件名,下面是要生成的Xcode文件的路径接下来点击Configure,完成后点击Generate即可生成Xcode项目,这两项都完成以后便生成了Xcode文件可以进入到刚才生成文件的目录下面点击可以进入到刚才生成文件的目录下面点击该文件即可...

2021-02-25 15:53:34 920

原创 解决mac OS opencv cv::VideoWriter写文件失败

解决方法 sphereWrite.open("/Users/hfy/Insta360/video/flipVideo/result/FA_render.mp4", cv::VideoWriter::fourcc('D', 'I', 'V', 'X'), outputExporterInfo->fps, cv::Size(outputExporterInfo->width, outputExporterInfo->height));将第二个参数改成cv::VideoWri.

2021-02-22 12:11:16 1175

原创 Linux 文件I/O

1.文件打开:openopen()函数语法要点 所需头文件 #include <sys/typed.h> //提供类型定义pid_t #include <sys/stat.h> #include <fcntl.h> 函数原型 int open(const char *pathname,int flags,int perms) 函数参数 pathname 被打开文件名 f...

2020-06-25 08:48:18 183

原创 K 个一组翻转链表

描述:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单...

2020-05-17 17:09:30 133

转载 Socket

https://www.cnblogs.com/wangcq/p/3520400.htmlSocket通信原理 对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1.什么是TCP/IP、UDP?2.Socket在哪里呢?3.Socket是什么呢?4.你会使用它们吗?什么是TCP/IP、UDP?TCP/IP(Transmissi...

2020-05-17 15:01:54 119

原创 合并两个有序链表

1./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNod...

2020-05-01 20:41:12 108

原创 fork和vfork的区别

fork和vfork都会在当前进程中产生一个子进程,区别如下 fork vfork 数据段 拷贝 与父进程共享 执行次序 随机 子进程先执行,在调用exec或exit后父进程才运行 调用fork之后,数据、堆栈有两份,代码仍然为一份但是这个代码段成为两个进程的共享代码段都从fork函数中返回,箭头表示各自的执行处。当父子进程有一个想...

2020-03-10 15:58:28 149

原创 vscode远程配置

c_cpp{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/include/**" ], ...

2020-03-07 17:30:39 296

原创 c++ 反转链表(双指针或栈)

方法一栈 ListNode* reverseList(ListNode* head) { if(head == nullptr) return nullptr; stack<ListNode*> q; ListNode result(0); ListNode *cur = &result; ...

2020-03-04 23:18:21 620

原创 c++二分查找详解

对于一个有序数组,我们可以进行,二分查找,时间复杂度为O(log2)主要问题1.中位数的查找:mid = (left + right) / 2;当left和right差值为1时,mid就不再更新,因为两个相邻的数相加必然是奇数,然而计算机中的整数除法会舍弃小数部分。2.结束循环的条件一、每次使mid必然移动一个,若要使mid改变,必然mid位置的值不等于目标值,所以直接使lef...

2020-02-29 21:11:47 370

原创 c++二叉树最大深度

递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */...

2020-02-02 15:08:05 210

原创 华为机试(移动坐标)

题目描述开发一个坐标计算工具,A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。输入:合法坐标为A(或者D或者W或者S)+数字(两位以内)坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10;A1A;$%$;YAD;等。下面是一个简单的例子如:A...

2020-02-02 12:10:19 174

原创 Linux 线程控制

线程有什么用?在Linux下,进程是操作系统调度的基本单位。进程的每次调度,都要创建很多资源,如:创建一个PCB,并开辟虚拟地址空间,创建页表,建立映射,分配代码,分配数据。开销比较大。而线程的开辟所需资源要小很多。线程和进程的ID:Linux的线程也称为轻量级进程,多个线程共享一个地址空间,这样创建一个线程所需重新创建和分配的资源要少很多,因此比较高效。tpid: 用户组ID,主...

2020-01-14 20:30:24 127

原创 Linux 互斥与同步

1.创建互斥锁:pthread_mutex_t使用互斥锁之前必须要创建一个锁的对象。互斥锁的类型为pthread_mutex_t,创建一个变量就是创建了一个互斥锁,我们通过这个变量建立开锁和解锁的联系。但这个锁还不能够直接使用,需要对其进行初始化。2.初始化互斥锁:我们对创建好的锁进行初始化的方法有两种int pthread_mutex_init(&mux,NLL);第一...

2020-01-13 10:55:11 101

原创 爬楼梯问题

S(n) = S(n-1) + S(n-2) + S(n-3);

2020-01-06 12:26:12 214

原创 LINUX文件系统和虚拟地址空间

目录1.虚拟内存空间解决了什么问题?2.LINUX虚拟内存空间结构3.页表1.虚拟内存空间解决了什么问题?闲谈:在研究虚拟地址空间,看到了一篇博客,说:在看到一项技术时,如果直接去看他的概念、用法、而忽视了他对比以前的技术有什么提升,解决了了以前技术中的哪些问题,这样是很不负责的。正题:在计算机技术发展的早期,通常程序是直接访问物理地址的,只要程序需要的内存大小不超过物理内...

2019-12-30 19:10:03 232

原创 LINUX 共享内存

共享内存有什么用?共享内存是Linux进程间通信的一种手段,即协助进程间通信共享内存的一般使用步骤1.使用int shmget(ket_t key ,size_t size , int shmflg), 向系统申请共享内存,大小为size字节,并且获取进程的操作标识符,通过返回值返回。int shmid = shmget(key , 1024 ,IPC_CREAT | 0644 ...

2019-12-29 22:15:34 174

原创 c++ 二叉搜索树实现

1.什么是二叉搜索树?二叉搜索树是一种特殊的树形结构,他的每一个节点永远比他的左孩子大,且比右孩子小。他的中序遍历,是从小到大排列。2.他有什么特点:最左边的节点是整个数据结构中最小的数据,最右边为最大。 中序遍历为一个递增的排列 左右子树也为二叉搜索树 他的左右子树也为二叉搜索树3.代码#pragma once#include <iostream>...

2019-12-28 17:17:54 68

原创 一个数组有 N 个元素,求连续子数组的最大和

题目:一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。示例1:输入3 -1 2 1输出3...

2019-11-11 20:19:41 1680 2

原创 写一个程序,来计算x个工作日后到哪个日子

这个程序解决的问题1.最近手中有一些资金,按照我现在余额,我算出了我还能定投x天,但是因为周末放假是不能进行定投的,只有周内可以。所以即使我知道了我现在能定投多少天,但也不能解决我想知道以我现在的资金,我可以最多坚持到定投到某一年的某个日子,于是乎,我灵机一动,最近正好在学c++,所以就有了下面这个程序。程序解读1.在想到要靠程序来解决问题的时候,我第一个就想到了闰年,闰月的问题,于是...

2019-11-06 15:48:25 264 1

原创 力扣:罗马数字转整数

class Solution {public: int romanToInt(string s) { int ret_roman=0; int size=s.size(); for(int i=0;i<size;i++){ if((i+1)<size){ if(getRm...

2019-11-05 17:19:48 79

原创 力扣:字符串转整数(atoi)

1.题目描述请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的...

2019-11-02 21:32:39 186

原创 c++ 实现优先级队列(模板)

1.特性及和队列的区别首先我们来看队列:队列是一种先进先出的数据结构,它是按照元素的入队时间顺序来出队的;而优先级队列是按照优先级来进行处理,即不是将队头元素出队,而是先将队列中优先级最高的元素出队,我们一般借助堆来选出优先级高的元素2.堆的简单描述堆是一种特殊的队列,从堆中取出元素不是按照入队顺序,而是按照元素优先级大小。堆是一颗完全二叉树,分为大堆和小堆,出对元素的值是队列中的最大...

2019-10-24 15:10:06 1331

原创 c++ vector 实现(简易版)

vector的简单介绍1.vector使STL为我们提供的一种可变大小的数组容器2.和数组一样,vector采用连续的空间来存储数据。这意味着它可以像数组一样采用下表的方式来访问元素,与数组一样高效,但他又优于数组,大小可动态分配,也可以自动改变自己的大小。3.vector使用动态分配数组来存储元素。当插入新元素时,且空间已满时,此时vector的做法是开辟一段新空间,将原数据拷贝到这...

2019-10-19 17:48:57 1897 2

原创 vector::cbegin()与vector::begin()的区别

cbegin在c++11中新增,与cend一组区别:1.用变量接受cbegin()的返回值时,变量的类型必须为const类型(且修饰指针指向的内容,其自身的值可以改变,但指向内容的值不允许改变,可用auto简化书写)2.只能进行遍历不能对vector中的元素进行修改...

2019-10-19 16:31:30 2650

原创 c++实现 模板list

1.list简介1.list是stl中的一种数据结构类型,stl为我们封装打包好。2.list可以在常熟范围内任意位置进行插入何删除操作的序列容器,并且可以在前后双向迭代。3.list的底层结构是双向链表结构,双向链表中的每个元素都存储在互不相关的独立节点中,在节点通过指针指向前一个和后一个元素4.list和forward_list非常相似:最主要的的在于forward只能向前迭代...

2019-10-17 18:40:18 413

原创 c++ string类总结

1.string类的初始化 string s1; //空字符串 string s2(10, '#'); //10个‘#’和\0,在s[10]的位置添加'\0' string s3("ABC"); //字符串“ABC” string s4(s3); //与s3内容一样 string s4={'a','b','c'}; //实际存进去的是“...

2019-09-27 15:29:21 104

原创 引用(含与指针的对比)

引用1.概念引用不是重新定义一个变量,而是给已存在的变量去了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。2.特点必须在定义时初始化 一个变量可以有多个引用 一个引用一旦引用了一个实体,就不能引用别的实体3.常引用①引用常变量或常量时,必须用const修饰 const int a = 10; //int &ra = a; ...

2019-09-15 09:07:59 74

原创 C语言str系列函数操作

1.strcpy①函数原型:char * strcpy(char * destination,const char * source);②作用:将source指向的C字符串复制到destination指向的数组中,包括终止空字符(并在该点停止)③返回值:返回destination注意:要避免内存重叠的问题。2.strcat①函数原型:char * strcat(char *...

2019-07-24 16:03:13 2709

原创 C语言文件操作

文件操作的流程:①打开文件或者建立并且打开文件②读取或者写入数据③关闭文件接下来就介绍一下c语言中一些常见的文件操作函数:1.fopen()①函数声明:FILE * fopen(const char * path,const char * mode)②在调用fopen以后该函数会返回一个FILE*类型的指针,指向该文件(调用成功)。如果失败则会返回NULL;③用法:...

2019-07-09 14:36:04 490

原创 自定义类型(结构体,联合体,位段,枚举)

1.结构体①什么是结构体?答:结构体是一种可以将不同类型打包在一起的一种用户自定义类型。②结构体怎样定义?答:用关键字struct 来定义例如:描述一个学生struct Student { char name[32]; //姓名 int age; //学号 char sex[5]; //性别 char id[20]; //学号}stu...

2019-07-02 09:23:42 264

原创 结构体内存对齐的问题

1.结构体的内存对齐是什么?我们发现在vs2017环境下sizeof(n1)大小为8和sizeof(n2)大小为12,如下typedef struct n1 { char a; char b; int i;}n1;typedef struct n2 { char a; int i; char b;}n2;只是定义变量的顺序不一样,为什么大小不一样,这里就是内存对齐的...

2019-07-02 09:21:35 297

原创 对指针和数组的理解总结

指针:1.首先我们来问一个问题,什么是指针?指针变量是什么?答:指针就是地址,指针变量就是存放地址的变量。如:int a=0;int*p=&a; //初始化p=&a; //赋值在上面的表达式中int*代表着指针的指向类型,p为变量的名称。2.第二个问题,指针变量既然也是变量,那么指针变量的地址能够被保存在另外一个变量中吗?答:答案当然是可以...

2019-06-22 14:00:03 203

原创 qsort()实现

函数功能描述:void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void *));  使用该函数,可以对任何类型的一维数组排序。该函数参数中,base 是待排序数组的起始地址,nelem 是待排序数组的元素个数,width 是待排序数组的每个元素的大小(...

2019-06-13 16:15:30 1671

原创 strcmp实现函数

题目描述:C/C++函数,比较两个字符串。 设这两个字符串为str1,str2, 若str1==str2,则返回零; 若str1>str2,则返回正数; //比较遇见不同的首个字符ascall码的大小 若str1<str2,则返回负数。 //比较遇见不同的首个字符ascall码的大小 题目实现:int my_strcmp(char*arr1,char*...

2019-06-11 17:47:38 3436 2

原创 (C语言)一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个只出现一次的数字

问题描述:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个只出现一次的数字,编程实现。问题分析:①在计算机中,任何数都以二进制数据存储,在二进制中异或只有两种可能,1/0;②任何数与自身异或都为0;③我们让所有数据都异或以后,相同的数都被抵消,得到的数字就是其中两个只出现一次的数字之间的异或结果(设为temp);④temp的二进制形式中,为1的位置...

2019-06-05 16:33:29 285

原创 (C语言)喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。

问题描述喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。题目分析以20瓶为例第一步: 喝了20瓶(drink=20),已经喝了(dron=20k);剩余20个瓶子(num_bot=20);第二步: 用20个瓶子去换10瓶饮料(drink=10),(num_bot=0),此时已经喝了30瓶(dronk=dronk+drink);此时剩余瓶子10个(num_bot...

2019-06-05 16:07:56 866

原创 扫雷c语言实现

实现功能①一个扫雷游戏,在一个二维坐标中有固定数量,随机位置的地雷,玩家要找到有地雷的位置,并标记它。②玩家第一次点击不会触雷,分析①首先应该想到,可以使用数组来实现坐标的定位功能②应有两个数组,一个用来展示给用户看自己已经标记和未进行探测的位置,另一个用来存储,所布雷的 情况③需要显示每个坐标附近的雷的数量,此时我们需要考虑使用一个函数统计周围雷的数量④如果每次只能扫一个就太慢了,...

2019-05-29 19:43:32 254

原创 杨氏矩阵查找值O(n)

杨氏矩阵的描述①杨氏矩阵二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的.②如{1,2,34,5,67,8,9}或{1,2,32,3,43,4,5}{1 3 42 4 54 5 6}分析:设查找的数为num;正常查找需要便利整个数组arr[row][col],但是我们发现这个数组从左到右依次增大,每次用每一行的最后一个数(即每一行最大的数)与所找的...

2019-05-29 16:32:39 248

原创 c语言操作符总结(菜鸟)(部分)

如题常用的操作符+,-,,/,>>,<<,&,^,|,他们可以进行+=,-=,*=,/=,%=,>>=,<<=等于如a+=b;等同于a=a+b;其他操作符同理,注意①%只能用于整数的运算。②移位分为逻辑移(左边补0右边舍弃)位和算术移位(左边补符号位右边舍弃)1:自增,自减++,–,这两个操作符分为前置和后置两种,前置时(++a)...

2019-05-24 21:30:32 223

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除