C++
文章平均质量分 88
xhj_enen
这个作者很懒,什么都没留下…
展开
-
C++模板类的使用以及运算符重载的实现
一、类模板及运算符重载的实现如同函数模板一样,使用类模板使用户可以为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值能取任意类型。类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。定义类模板的一般形式是...原创 2018-07-04 17:02:26 · 14014 阅读 · 6 评论 -
Windows + VS2017超详细点云库(PCL)配置
转自简述PCL(Point Cloud Library)作为一个优秀的点云库,目前已经开源并且集成了许多优秀学者提出的高效的算法,值得深入学习。本文将以Windows 10和Visual Studio 2017开发环境为例,讲解如何配置点云库。环境Windows Visual Studio准备工作安装Visual Studio教程中使用的是Visual Studio 2...转载 2019-07-03 16:00:16 · 4695 阅读 · 0 评论 -
(C++算法工程师考点总结)面向对象编程
一、虚函数表1、基础知识:32位操作系统指针长度为4bytes,64位操作系统指针长度为8bytes。new一个对象时,只为类中的成员变量分配空间,对象之间共享成员函数。当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包含虚函数的基类,那么这个类也拥有自己的虚表。虚函数表:虚函数表...原创 2019-03-22 16:32:22 · 188 阅读 · 0 评论 -
(字符串)求一个字符串的全排列
一、问题描述给定字符串 S[0,…,N-1],设计算法,枚举 S 的全排列。二、问题分析全排列的问题规模是阶乘级的,而递归算法的时间复杂度就是用递归求的,所以考虑用递归来求解问题:分别以1,2,3,4作为首字符,剩余的字符串继续做全排列,即做递归。三、带重复字符的字符串的全排列带重复字符的全排列就是每个字符分别与它后面非重复出现的字符交换。即第i个字符与第j个字符进行交换之前,...原创 2019-03-11 21:57:55 · 1043 阅读 · 0 评论 -
(C++算法工程师考点总结)基础
1、源程序是如何被编译成可执行的二进制程序的预处理: 在程序编译之前,由预处理器对C++源程序完成预处理工作。预处理主要将源程序中的宏定义指令、条件编译指令、头文件包含指令以及特殊符号完成相应的替换工作。(该步骤不进行语法检查,这就是inline函数比宏定义安全的原因)编译器: 以预编译的输出作为输入,利用C++运行库,通过词法分析和语法分析,在确认所有的指令都符合语法规则时,将其翻译成等价...原创 2019-03-20 12:08:28 · 508 阅读 · 0 评论 -
(字符串)字符串的循环左移
一、问题描述字符串的循环左移: 给定一个字符串 S[0,…,N-1],要求把 S 的前 K 个字符移动到 S 的尾部,如把字符串 ‘abcdef’ 前面的 2 个字符 ‘ab’ 移动到字符串的尾部,得到新字符串 ‘cdefab’(字符串循环左移k,也即循环右移n-k)。算法要求: 时间复杂度为 O(n),空间复杂度为 O(1)二、问题分析1、暴力移位法每次循环左移1位,调用k次即可时...原创 2019-03-11 17:41:31 · 878 阅读 · 0 评论 -
字符串编辑距离(Edit Distance)
一、问题描述定义字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之间,由一个转变成另一个所需的最少编辑操作次数。许可的编辑操作包括:将一个字符替换成另一个字符插入一个字符删除一个字符应用1. DNA分析:基因学的一个主要主题就是比较DNA序列并尝...原创 2019-03-11 17:05:22 · 1678 阅读 · 0 评论 -
Longest Increasing Subsequence
问题描述最长递增子序列:给定一个长度为 N 的数组,找出一个最长的单调递增子序列。例如:给定数组{5,6,7,1,2,8},则其最长的单调递增子序列为{5,6,7,8},长度为4。问题分析一、可以将 LIS 问题转换为 LCS(Longest Common Subsequence) 问题进行求解。方法如下:原数组为 A{5,6,7,1,2,8}排序后为 A’{1,2,5,6,7,8}...原创 2019-03-11 15:51:33 · 198 阅读 · 0 评论 -
Longest Common Subsequence
问题描述LCS 的定义:Longest Common Subsequence,最长公共子序列,即两个序列 X 和 Y 的公共子序列中,长度最长的那个,并且公共子序列不同于公共字串,公共子序列可以是不连续的,但是前后位置不变。LCS 的意义:求两个序列中最长的公共子序列的算法,广泛的应用在图形相似处理、媒体流的相似比较、计算生物学方面。生物学家常常用该算法进行基因序列比对,由此推测序列的结构...原创 2019-03-11 15:36:43 · 2844 阅读 · 0 评论 -
C++中using的使用总结
1、别名声明在C++中,可以使用 typedef 为复杂的类型名字定义一个简单并且易于理解的类型别名,格式如下:typedef double wages; // wages 是 double 的同义词typedef wages base, *p; // base 也是 double 的同义词,p 是 double* 的同义词在C++的新标准中,还规定了一种新的方法可以实...原创 2019-03-07 21:37:38 · 583 阅读 · 0 评论 -
(计算机视觉)计算机视觉基础
一、常用的图像处理库OpenCVCxImageCImgFreeImage二、开源项目OpenBR:人脸识别相关EasyPR:车牌识别相关三、开发工具相关OpenCV中VC库的版本与Visual Studio版本的对应关系:VC8 —> 2005VC9 —> 2008VC10 —> 2010VC11 —> 2012VC12 —&原创 2019-03-15 12:21:22 · 553 阅读 · 0 评论 -
(图论)周围区域问题
问题描述原创 2019-03-14 16:31:48 · 406 阅读 · 0 评论 -
C++中回调函数使用详解(普通函数作为回调函数以及类的成员函数作为回调函数)
引言:在C++编程,尤其时写Qt程序时,需要大量使用回调函数,在网上也有很多大牛对回调函数的使用进行了讲解,但是很多都是针对某一个或者两个特定的类型的。我在这篇文章中对网上关于回调函数的使用进行了归纳总结,并且对每一种类型的回调函数都写了一个简单的例子来实现,每个例子都可以在vs2015中编译通过。其中需要用到 bind和function的代码,由于使用了C++11的新标准,所以在vc6.0中...原创 2018-11-06 16:17:06 · 3659 阅读 · 0 评论 -
OTSU算法的原理介绍及C++和Python实现
前言:最近由于在做图像处理方面的工作,需要自己编写提取图像中对象边缘的算法,我目前所采用的事最简单的阈值分割算法,在此算法中最重要的一个参数就是用于分割前景和背景的阈值。刚开始做的时候阈值都是通过手动调整然后观察效果来设定的,之后再网上查阅了许多前辈的博客之后,了解了OTSU算法,可以用于自动计算最佳的分割阈值。原理:大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津...原创 2018-09-07 17:15:10 · 4742 阅读 · 4 评论 -
图像插值算法的原理及C++实现
简介:在图像的处理过程中,经常需要对图像进行尺寸变换、旋转或者扭曲等操作,在进行这些操作之后,原图像的尺寸往往就发生了改变,为了保持变换后的图像不失真,就需要对图像进行插值。常见的插值方法有最近邻插值和双线性插值。最近邻插值:最近邻插值是最简单的一种插值方式,就是在对图像进行坐标变换之后,选取原图像中距离最近的像素点进行插值(简单说就是将目标图像的像素位置映射到源图像之后,对x、y...原创 2018-09-11 11:46:25 · 3342 阅读 · 0 评论 -
Windows + VS2019点云库(PCL)配置
简述PCL(Point Cloud Library)作为一个优秀的点云库,目前已经开源并且集成了许多优秀学者提出的高效的算法,值得深入学习。本文将以Windows 10和Visual Studio 2017开发环境为例,讲解如何配置点云库。环境Windows Visual Studio准备工作安装Visual Studio教程中使用的是Visual Studio 2017 ...转载 2019-07-05 15:59:40 · 13817 阅读 · 4 评论