C/C++
草帽小子Coder
这个作者很懒,什么都没留下…
展开
-
取double数据位上的数据
取double数据位上8位的数据:思路:将数据右移8位,每移动8位,将需要的数据位移动到最低位,与0x00FF相与得到的结果为该8位上的数据。代码:#include<iostream>#include<cmath>using namespace std;int main(){ double data = 47289.0; unsigned int...原创 2020-01-08 16:30:07 · 372 阅读 · 0 评论 -
图像梯度的基本原理
图像梯度图像梯度基本原理图像就是函数原创 2019-06-03 10:11:55 · 435 阅读 · 0 评论 -
自动聚焦算法
无参考图像的清晰度评价方法 from: http://nkwavelet.blog.163.com/blog/static/227756038201461532247117 在无参考图像的质量评价中,图像的清晰度是衡量图...转载 2019-06-03 09:26:46 · 8626 阅读 · 3 评论 -
c++中string与int互相转换
一、string转int的方式采用最原始的string, 然后按照十进制的特点进行算术运算得到int,但是这种方式太麻烦,这里不介绍了。采用标准库中atoi函数。string s = "12"; int a = atoi(s.c_str()); 对于其他类型也都有相应的标准库函数,比如浮点型atof(),long型atol()等等。采用sstream头文件中定义的字符串流对象来实现转...转载 2019-05-23 10:22:28 · 3828 阅读 · 0 评论 -
MFC项目记录
用了MFC将近有好几个月的时间,在此记录MFC项目的一点经验: 最基本的创建控件,可以直接在工具栏直接拖控件到对话框中,可以通过设置控件的属性Owner Draw来设置可以改变控件的外观,变得更美观,在项目中自己实现了一个类CNewButton,可以直接在对按钮控件添加该类的对象,利用该对象直接调用类的变量Picname使用图片就可以直接设置图片到该控件,每创建一个控件和变量或者对...原创 2019-05-22 21:18:37 · 238 阅读 · 0 评论 -
MFC下CString与string转换,打开保存图片
MFC下CString与string转换:https://www.cnblogs.com/HappyEDay/p/7016162.htmlhttps://www.cnblogs.com/bluestorm/p/3168720.html利用OPENCV和MFC系统对话框打开和保存图片https://www.cnblogs.com/delmorezhu/p/7910373.htm...原创 2019-05-22 19:58:00 · 554 阅读 · 0 评论 -
MFC下对文件及文件夹的操作(复制、剪切、删除、创建文件夹,写文件)
一、文件夹的创建 1 void CFileOperationDlg::OnButtonMakeFolder() 2 { 3 // TODO: Add your control notification handler code here 4 ...转载 2019-05-22 19:55:03 · 594 阅读 · 0 评论 -
MFC图片保存
MFC图片保存MFC中有时候软件中需要保存相机当前采集到的图片,这时候软件一般会默认给一个命名,同时用户也可以更改名称,而且也可以不加后缀,用户可以随意使用。 SYSTEMTIME str; GetLocalTime(&str); CString timePath; CString img = _T("Image"); CString cs = _T("-"); CSt...原创 2019-05-24 20:41:54 · 2974 阅读 · 0 评论 -
剑指offer二叉树镜像
题目:操作给定的二叉树,将其变换为源二叉树的镜像。解读:从树的根节点开始遍历,遍历到根节点,然后看有没有左右子节点,如果有的话,交换他们的左右位置 递归遍历,对于每一个节点,遍历它的子节点,如果存在即交换位置,直到遍历到没有子节点为止如下图所示,形象表述了镜像的整个过程,对于镜像操作,有两种方案,一种是使用递归的方式,一种是非递归方式,前者较简单一些,后者稍微复杂。...原创 2019-04-25 11:06:35 · 244 阅读 · 0 评论 -
内联函数
内联函数是C++为提高程序运行速度进行的改进,是一种以空间换时间的做法。内联函数与常规函数常规函数运行程序时,常规函数调用会使程序跳到另一个地址(函数地址),并在函数结束时返回。 详细过程:执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代码(也许还需要将返回值放入寄存器中),然后跳回到地址被...转载 2019-04-19 19:46:12 · 163 阅读 · 0 评论 -
无重复字符的最长字串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"w...原创 2019-07-15 20:41:59 · 229 阅读 · 0 评论 -
细说C++中字节的对齐方式
C++中字节的对齐方式可以采用编译器默认的字节对齐方式, 也可以采用自定义的对齐方式。编译器默认字节对齐方式1、结构体中每个成员分别按自己的方式对齐(注:对于数组如int a[3], 其对齐字节为...转载 2019-07-15 09:41:40 · 1051 阅读 · 0 评论 -
Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:...原创 2019-07-15 22:37:52 · 126 阅读 · 0 评论 -
C++面试题之虚函数(表)实现机制
前言大家都应该知道C++的精髓是虚函数吧? 虚函数带来的好处就是: 可以定义一个基类的指针, 其指向一个继承类, 当通过...转载 2019-09-16 08:56:36 · 383 阅读 · 0 评论 -
图像连通域分析
一、前言二值图像的图像的亮度值只有两个状态:黑(0)和白(255)。二值图像在图像分析与识别中有着举足轻重的地位,因为其模式简单,对像素在空间上的关系有着极强的表现力。在实际应用中,很多图像的分析最终都转换为二值图像的分析,比如:医学图像分析、前景检测、字符识别,形状识别。二值化+数学形态学能解决很多计算机识别工程中目标提取的问题。二值图像分析最重要的方法就是连通区域标记,它是所有二值图像...转载 2019-08-09 21:37:05 · 3430 阅读 · 1 评论 -
int转string string转int
#include <iostream>#include <string>using namespace std;int main(){ int z = 123447; string zz = std::to_string(z);//int转string cout << zz <<endl; string zzz = "123333...原创 2019-08-08 21:05:18 · 151 阅读 · 0 评论 -
实现strStr()
题目描述:实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", n...原创 2019-07-17 16:23:52 · 135 阅读 · 0 评论 -
最后一个单词的长度
题目:给定一个仅包含大小写字母和空格' '的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5思路:从后往前遍历,当识别到不为空格的时候,开始计数,继续遍历,当识别到为空格的时候,第一个单词结束,即可得到第一个单词的数目。代码:...原创 2019-07-17 16:15:05 · 82 阅读 · 0 评论 -
有效的括号
题目:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例...原创 2019-07-16 20:54:49 · 113 阅读 · 0 评论 -
最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。解题:找出最短字符串,并以其为标准,...原创 2019-07-16 09:02:37 · 72 阅读 · 0 评论 -
树的子结构
题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解读:如下图中寻找A树中,是否有B子树存在,先遍历根节点,看是否存在B树的根节点8,如果存在,继续遍历A树中该根节点的左子节点和右节点,是否和B树的左子节点和右子节点相等。下面对应的是首先看到A树的根节点是8与B树的根节点相等,然后看A树这个节点的左子结点是8,此时与B中的左子结...原创 2019-04-24 11:38:50 · 116 阅读 · 0 评论 -
malloc工作机制
1、关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果: 也可以这样认为(window下)原型:extern void *malloc(unsigned int num_bytes);1头文件:#include<malloc.h>或者#include<alloc.h>两者的内容是完全一样的1如果分配成功:则返回指向...转载 2019-04-18 13:00:05 · 421 阅读 · 0 评论 -
C/C++ 的思考:int a[10] 和 int *a = malloc(10 * sizeof(int)) 的区别
曾几何时,我们初学 C/C++ 的新人总会产生这么一个疑问:int a[10] 和 int *a = malloc(10 * sizeof(int)) 究竟有何区别?这个问题的答案或许很简单,但是这里我想要细细的去探讨下。我们都知道,C 和 C++ 对于数组和动态内存的处理方案是不同的,C 使用了数组、malloc/free 的方案,而 C++ 为了整合 OO 的概念,提出了 std::...转载 2019-04-18 12:53:07 · 1428 阅读 · 0 评论 -
C++/Qt 开发过程中的一些技巧性总结
一.C++1.变量的修饰auto:属于一次性存储,其存储空间可被若干变量重复覆盖使用register:存放在通用寄存器中extern:在所有函数和程序段中都可以引用static:在内存中时以固定地址存放的,在整个程序运行期间都有效2.显示转换操作符static_casedynameic_castconst_castreinterpret_cast3.bool的默认值...转载 2019-03-28 11:03:49 · 285 阅读 · 0 评论 -
sizeof()来求一个类的大小
一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小.首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么sizeof(A)的大小和成员的大小总和是什么关系呢,很简单,一个对象的大小大于等于所有...转载 2019-04-10 15:30:48 · 659 阅读 · 0 评论 -
C++拷贝构造函数
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a = 100;int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include <iostream>using namespace std;cla...转载 2019-03-30 10:39:40 · 101 阅读 · 0 评论 -
C++经典面试题
C++经典面试题1,关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量。(2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。...转载 2019-04-03 21:29:12 · 3218 阅读 · 0 评论 -
vector容器
例子:#include <string.h>#include <vector>#include <iostream>#include <algorithm>using namespace std;int main(){ //顺序访问 vector<int>obj; int num = 1; for (int i...原创 2019-03-29 22:06:26 · 178 阅读 · 0 评论 -
C++中类继承的对象构造函数的调用顺序
第一个例子:#include <iostream>using namespace std;class A{public: int i; A() { cout << "AAa" << endl; } ~A() { cout << "qqqq" << endl; }protected:private:};cl...原创 2019-03-29 21:32:44 · 2846 阅读 · 1 评论 -
C++vector的使用总结及常用vector操作
一、C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分,使用时需包含头文件:#include <vector>二、C++ vector类有两种使用方式:第一种:STL方式vector< string > text;1. 我们向 vector 中插入元素,而不再是索引元素,以及向元...转载 2019-03-16 09:57:20 · 413 阅读 · 0 评论 -
C++中return局部变量
函数完成后,所指向的内存空间也随之被释放掉,所以函数终止意味着局部变量的引用将指向不再有效的内存区域,但是如果函数的局部变量作返回值时,会生成一个局部变量的拷贝用作返回值,之后局部变量会被系统回收,所以函数不能返回局部变量的地址,因为系统回收后,如果还返回局部变量的地址的话,指针所指向的内容毫无意义。具体看如下例子:int test0(void){ int a = 50; return...原创 2019-04-11 21:13:41 · 3116 阅读 · 0 评论 -
C++智能指针
在c++98中,智能指针通过一个模板“auto_ptr”来实现,auto_ptr以对象的方式来管理堆分配的内存,在适当的时间(比如析构),释放所获得的内存。这种内存管理的方式只需要程序员将new操作返回的指针作为auto_ptr的初始值即可,程序员不能显式的调用delete。如 auto_ptr(new int)。 这在一定程度上避免了堆内存忘记释放造成的问题。不过auto_ptr也有一...转载 2019-04-13 17:28:58 · 100 阅读 · 0 评论 -
opencv中push_back的浅拷贝与深拷贝
Mat数据类型的深拷贝与浅拷贝1、深拷贝 opencv中深拷贝是在定义另外一个Mat数据类型的时候会重新开辟一块内存,把当前需要拷贝的数据放在新开辟的内存里面,这样就让这两个变量毫不相关,操作任何一个都不会影响另外一个,这就是所谓的深拷贝;举例如下:把其中一幅图片滤波之后都不会影响另外一幅图片#include <stdio.h>#include <...原创 2019-04-03 16:01:54 · 4348 阅读 · 0 评论 -
C++数组总结
数组是一种复合类型,声明形如a[x],a是数组名,x是数组维度。int *parr[10];//含有10个整形指针的数组int (*pppp)[10]//数组指针,pppp是指向含有10个int元素的指针unsigned cnt=42;string bad[cnt]//错误:cnt不是常量表达式const unsigned sz=42;int *ppp[sz]//正确,sz是常量表...原创 2019-04-12 14:49:55 · 1370 阅读 · 0 评论 -
C++顺序容器总结
顺序容器介绍vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或者删除元素可能很慢。 deque 双端队列。支持快速随机访问。在头尾位置插入或者删除速度很快。 list 双向链表。只支持双向顺序访问。在list中任何位置进行插入或者删除速度都很快。 forward_list 单向链表。只能支持单向顺序访问。在链表任何位置进行插入或者删除操...原创 2019-04-12 14:00:00 · 260 阅读 · 0 评论