自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 用mscomm控件编写串口通信出现error reading comm device错误-已解决

一、问题描述 用mscomm控件编写串口通信过程中,在消息响应函数OnComm函数下接受串口发送过来的数据时,在get_Input()函数会出现error reading comm devece 错误。具体代码如下:void XXXDlg::OnCommMscommLaser(){ memset(chstrLaser, 0, 1024); //chstrLaser为全局变量. short i = m_mscomLaser.get_InBufferCount(); //语...

2021-08-27 10:02:42 2849 2

原创 未在计算机上注册控件-已解决

我们在写MFC程序用到ActiveX控件时,有的时候上一秒都用得好好的,下一秒就提示未在计算机上注册该控件,叫先注册了才能用,通过vs等软件也注册不了,那只能手动下载相应控件并注册了。下面以注册串口通信控件MsComm控件为例: 有很多控件系统是没有自带的,比如MsComm(Microsoft Communications control)控件就需要在计算机上注册。 注册第一步,下载相应的控件,MsComm控件下载地址:https://www.ocxme.com/files/mscomm...

2021-08-23 08:51:00 2084

原创 linux命令:批量替换多个文件中的指定字符/字符串/子串

一条命令搞定sed -i "s/原字符串/目标字符串/g" `grep 原字符串 -rl 需要批量替换的文件或文件夹目录`如:在当前目录将原字符串"suffx"(也可以是子串)批量替换为字符串"_kind",如下一行命令即可实现批量替换sed -i "s/suffix/_kind/g" `grep suffx -rl ./`...

2021-01-14 15:49:53 3277 1

原创 结构体对齐(字节对齐)规则及大小计算

什么是字节对齐这跟读取数据有关,cpu读取一次能读取到的内存大小跟数据总线的位数有关,如果数据总线为16位,那么cpu一次能够读取2字节;如果为32位那么cpu一次可以读取4字节,而读取数据是需要消耗时间的,为了提高效率,尽量让同一个数据(变量)能使用最少次数将其读取出来,那么解决办法就是要求每个数据(变量)在其自然边界上,比如说一个int类型的变量占4字节,那么在存储这个int变量的时候编译器会将让这个变量的起始地址能够被4整除,那么这样就不会导致这个int类型的变量明明没有超过数据总线位数(假设位3

2020-07-15 20:30:01 4458 1

原创 动态规划思想实现最长回文子串(c++代码)

思想:假设dp[i,j]=1,表示str[i…j]是回文串,dp[i,j]=0表示str[i,j]不是回文串.if str[i] == str[j] then dp[i,j] = dp[i+1,j-1].if str[i] != str[j] then dp[i,j] = 0.代码:完整代码已上传我的github,项目名DP,其中还有最大公共子序列和最长公共子串的实现:https://github.com/yisun03/DPLPS.h//// Created by yis o.

2020-07-13 13:19:28 726

原创 动态规划思想计算最大公共子串(c++代码)

问题: 计算两个字符串的最大公共子串(longest common continue substring), 注意不是子序列是子串,子串是要求字符之间是相连的,而序列则只要求是保持前后顺序不变. 我们这里要求的是最长公共子串的长度.思想:设:C[i,j] = LCS(str1[1...i],str2[1...j]),即C[i,j]表示序列str1[1...i]和str2[1...j]的最长公共子序列的长度,则 C[m,n] = LCS(str1,str2)...

2020-07-12 21:16:55 873

原创 动态规划思想计算最大公共子序列(c++代码)

问题:计算两个字符串的最大公共子序列(longest common substring),注意是子序列不是子串,子串是要求字符之间是相连的,而序列则只要求是保持前后顺序不变.比如str1 = "abc"和str2 = "bac"的最长公共子序列为"bc"和“ac".我们这里要求的是最长公共子序列的长度.思想:计算两个数组的最长公共子序列.设:C[i,j] = LCS(str1[1...i],str2[1...j]),即C[i,j]表示序列str1[1...i]和str2[1...j]的

2020-07-12 20:29:25 368

原创 十大排序算法的c++实现看这篇就够了(可直接用在自己项目中)

我将十大排序算法做成一个类,代码中有丰富的注释,包括算法思想,明了易懂。您也可以直接拿来使用,不需要自己再花时间实现。您只需要将两个文件:sort.h和sort.cpp放到您的项目中并在你的代码中使用:yis::sort::sort_name;即可完成对应排序算法的排序。为了防止名字冲突我添加了"yis"命名空间(当然您可以对源码进行修改)。项目地址见我的github: https://github.com/yisun03/sort如果代码中哪里的注释或思想我有说错(当然代码都..

2020-07-03 22:11:07 268

原创 c++实现基数排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-03 21:18:35 3359 5

原创 c++实现桶排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-03 20:08:04 3529 1

原创 c++实现计数排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-02 22:31:58 1465

原创 c++实现堆排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-02 20:48:50 403

原创 c++实现非递归的快速排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort递归实现见我的另一篇blog:https://blog.csdn.net/weixin_39408343/article/details/107086104项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b ..

2020-07-02 16:36:58 1615

原创 c++实现递归的快速排序

代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序指在排序

2020-07-02 15:56:46 1482

原创 c++实现非递归的归并排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。递归实现版本见我的另一篇blog:https://blog.csdn.net/weixin_39408343/article/details/107083607项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b

2020-07-02 15:09:00 1246

原创 c++实现递归的归并排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-02 14:29:55 789

原创 c++实现希尔排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-01 20:50:27 457

原创 c++实现冒泡排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-01 19:44:36 452

原创 c++实现插入排序

代码说明代码是我亲自码的,调试通过的,代码中有算法思想和详细的注释,一目了然。项目已经上传到我的github:https://github.com/yisun03/sort项目中近期会陆续更新十种排序算法的c++实现代码以及其思想。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地

2020-07-01 19:07:12 396

原创 c++实现选择排序

代码说明代码是我亲自码的,调试通过的,代码中有详细的注释,一目了然。术语说明1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。3、原地排序:原地排序指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。4、非原地排序:需要利用额外的数组来辅助排序。5、时间复杂度:一个

2020-07-01 14:33:08 600

原创 c++中截取想要的特定的字符子串

c++中想要对字符串string进行截取字符特定的字符字串,可以结合substr()和一系列的返回索引函数来做。1、substr()函数很好理解,他的原型为://原型1basic strin::substr(string,start,length);//原型2(将string移到外面)string &a,a.substr(start,length);函数功能时返回字符串a从start位置开始的长为length的子串,其中start参数必须提供,参数lmeiyouength为可选

2020-06-18 16:48:36 10632

原创 std::vector顺序容器的默认顺序问题

对于顺序容器vector,在一系列的插入元素之后,它里面的元素的顺序会不会被vector重新排列顺序,对于重复插入相同的元素时vector又是怎么处理的。我们用实验说话:上我的代码 std::vector<int> vec_it; std::vector<double> vec_db; for(int i = 3;i < 11; i++) { vec_it.push_back(i%9); // 3,4,5,6,7,8,0,1 vec_

2020-06-13 15:57:05 3209

原创 c++子类重写父类的虚函数对返回类型和参数列表的要求

对于c++中的继承,如果子类重写父类的virtual函数,那么子类重写的这个函数的返回类型和参数列表要满足什么要的要求呢?可不可以和父类的那个virtual函数的返回类型或者参数列表不一样呢?下面来实验一下:我设计了三个类:base derived returns他们分别是父类:base,子类:derived,以及用于测试的返回类:returns.他们的结构如下:base.h和base.cpp#include "returns.h"class base{public:

2020-06-13 15:21:28 5168 1

原创 java中BigInteger类的成员函数

大数BigInteger不是基本数据类型之一,它像String一样是Java里的一个类,有如下方法提供:BigInteger abs() 返回大整数的绝对值BigInteger add(BigInteger val) 返回两个大整数的和BigInteger and(BigInteger val) 返回两个大整数的按位与的结果BigInteger andNot(BigInteger val) 返回两个大整数与非的结果BigInteger divide(BigInteger val)...

2020-06-12 15:45:31 200

原创 c++实现将实数转化为分子分母都为整数的分数。

real_value* translation_util::real_to_fraction(float num) { //分子. long long nume = 0; //分母. long long denom = 1; bool flag = false; char ch; string str = std::to_string(num); //得到分子分母. for(int i = 0; i < (int)str.l.

2020-06-01 12:28:05 1179

原创 c++中子类调用父类方法的方法

在c++中子类调用父类方法的方法和java所用的方式不一样,java使用super指针就可以调用,c++中虽然也有this指针,但是不能用super去调用父类方法。c++用的方法为:fatherClass::fatherFunction().1、java中的方法public Expr visit(BinaryExpr e) { if (isTupleComparison(e)) { if (e.op == BinaryOp.EQUAL) { return equal;

2020-05-29 10:49:47 7318

原创 C++ static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)

为了使潜在风险更加细化,使问题追溯更加方便,使书写格式更加规范,C++ 对类型转换进行了分类,并新增了四个关键字来予以支持,它们分别是:使用格式统一为xxx_cast<new_type>(expr).new_type为目标类型,data为要转的表达式。注意:1、static_cast不能用于无关类型之间的转换,因为无关类型之间的转换是有风险的。比如:int转double可以,但是int* 转 double* 就不行,double转int虽然可以,因为double.

2020-05-25 10:42:07 249

原创 c++中的虚函数(virtual)

虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。派生类不能改变virtual现状,基类函数没有virtual的时候派生类不能声明成有,基类有virtual的时候派生类声明不声明都一样.#include<iostream>class base{public: virtual void print1(){std::cout << "基类" << std:.

2020-05-22 10:28:00 672

转载 c++中也有java中的匿名内部类

什么是内部类将类写在其他类的内部,可以写在其他类的成员位置或局部位置,这种写在其他类内部的类就称为内部类。其他类也称为外部类。什么时候使用内部类在描述事物时,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含有发动机,这时发动机就可以使用内部类来描述。 class 汽车 { //外部类 class 发动机 { //内部类 } }内部类的分类内部类分为成员内部类与局部内部类。我们定义内部类时,就是一个正常定义类的过程...

2020-05-21 17:04:09 1646 2

原创 c++中explicit关键字的介绍

1、C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit,隐式转换即是可以由单个实参来调用的构造函数定义了一个从形参类型到该类类型的隐式转换。编译器在试图编译某一条语句时,如果某一函数的参数类型不匹配,编译器就会尝试进行隐式转换,如果隐式转换后能正确编译,编译器就会继续执行编译过程,否则报错。2、当类的声明和定义分别在两个文件中时,explicit只能写在在声明中,不

2020-05-18 18:38:48 329 1

转载 c++中std::move()的用法

std::move函数可以以非常简单的方式将左值引用转换为右值引用。通过std::move,可以避免不必要的拷贝操作。std::move是为性能而生。std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如string类在赋值或者拷贝构造函数中会声明char数组来存放数据,然后把原string中的 char 数组被析构函数释放,如果a是一个临时变量,则上面的拷贝,析构就是多余的,完全可以把临时变量a中的数据直接 “转移” 到新的变量下面即

2020-05-18 18:14:33 1214

原创 一些操作符的含义

要是不知道操作符的含义可以对照一下,但是不同语言会有不一样的,但大多都差不多含义。这是ocaml语言的操作符含义:+整型加法- 整型减法~-或- 整型负* 整型乘法/ 整型除法,若除零则会raise一个Division_by_zeromod 整型同余,若第二个参数为0则会raise一个Division_by_zeroland 整型的逐位逻辑与lor 整型的逐位或lxor 整型的逐位异或lsl 整型的逻辑左移lsr 整型的逻辑右移asr ...

2020-05-17 16:25:51 377

原创 c++中如何动态生成变量名

这个问题也困扰了我好久,要是真的去动态的生成x0,x1,x2........是真的不可能。但是会有办法做到相似效果。比如想要做到如下:for(int i = 0; i < _vector.size(); i++) //_vector是一个vector对象{ auto v = _vector.at(i); auto xi = get_name(v); //想要在这个循环中生成x0,x1,x2,x3........}一个最直观最简单的办法就是利用数组。int x[_v

2020-05-16 17:46:06 7549 3

原创 c++中子类和父类的强制转换

只有子类转换成父类,父类不能转换成子类。因为子类是从父类继承而来,子类中包含父类中所有成员。而如果父类可以转换成子类,意味着将子类中将有一部分是未知的成员。这是不被允许的。要是确定父类转换成子类你能保证是正确的,可以用强制转换:子类强制转换为父类用static_cast<>:(a : public A)A * book;a* name;book = static_cast<A*>(name);父类转换为子类用dynamic_cast<>:

2020-05-12 09:05:03 8604

原创 ubuntu升级或按安装cmake

可以用sudo apt-get install cmake但是这不能选择版本用以下方法:wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gztar -xvf cmake-3.9.2.tar.gzcd cmake-3.9.2./configuresudo makesudo make installhash -rcmake --version卸载老版本camke 见链接:https://blog.csdn..

2020-05-11 12:54:23 704

转载 ubuntu卸载软件(cmake)

cmake的版本在ubuntu编译程序时至关重要,特别是编译他人的工程时,有时必须保证cmake的版本与工程所有者相同。对于cmake的卸载问题,现在一般博客中给的指导是:sudo apt-get remove cmake但是此句指令是针对于通过sudo apt-get install cmake 安装的用户。如果是从源码安装,以上删除方式则不能成功删除,因此对于源码安装的cmake,博主经过实践,首先到cmake的安装目录下找到install_manifest.txt,txt中保存了所有cmake

2020-05-11 12:51:20 3964

原创 主机和虚拟机之间实现文件夹共享

1、设备--->文件夹共享--->固定分配--->新建一个共享文件夹填好要共享的主机文件夹选择自动挂载2、会在文件里面看见共享文件夹但是点击的时候说没有权限查看解决办法:将自己用户名加进去命令:sudo adduser yis vboxsfyis是我的用户名,然后就行了。...

2020-05-10 19:32:09 658

原创 ubuntu安装flex和bison(附有flex-2.6.4.tar.gz)

bison可以直接用命令装:sudo apt-get install bisonflex建议用源码装:下载flex-2.6.4.tar.gz后解压:sudo tar -zxvf flex-2.6.4.tar.gz进入解压目录:cd flex-2.6.4再运行命令:./configuremakemake installflex-2.6.4.tar.gz下载链接永久有效提取码: ah24...

2020-05-10 13:46:06 4035 4

原创 c++中string的截取、替换和查找操作

1. 截取子串s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回2. 替换子串s.replace(pos, n, s1) 用s1替换s中从pos开始(包括0)的n个字符的子串3. 查找子串s.find(s1) 查找s中第一次出现s1的位置,并返回(包括0)s.rfind(s1) 查找s中最后次出现s1的位置,并返回(包括0)s.find_first...

2020-05-09 10:41:39 265

原创 java中map的computeIfAbsent()函数

一、HashMap computeIfAbsent(Key, Function) 的这个方法,是被用来计算给定key,给定映射函数的的值。如果,key之前并没有映射到一个值,或者映射到null,那么,就用计算出来的值放到这个hashmap中。 如果这个映射函数返回null,那么不添加任何k-v对 如果在计算过程中,抛出异常,那么不添加任何k-v对 在计算过程中,无法修改此map 方法会抛出ConcurrentModificationException ,如果在计算过程中,...

2020-05-09 09:43:30 1724

空空如也

空空如也

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

TA关注的人

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