自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt解析XML文件的两种方式

XML是ExtensibleMarkup Language的缩写,即可扩展标记语言。它是一种用来创建的标记的标记语言。使用XML标记语言可以做到数据或数据结构在任何编程语言环境下的共享。XML中有格式正规的XML和有效的XML。XML文档的元素一般是由标记头、标记末和标记间的字符串数据构成。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。一般格式: Aquotion。元素中可以插入属性,但是属性值一定要用双引号。XML解析器是读取XML文档并提供对文档内容的访问的软件模块。

2022-12-08 14:53:09 2770 1

原创 Qt中的JSON支持

Qt支持处理JSON数据。JSON是一种对源自Javascript的对象数据进行编码的格式,但现在被广泛用作互联网上的数据交换格式。Qt中的JSON支持提供了一个易于使用的C++API来解析、修改和保存JSON数据。它还支持以二进制格式保存数据,这种格式可以直接“mmap”,并且访问速度非常快。JSON数据格式的更多详细信息可以在JSON中找到。https://www.json.org/json-en.html和RFC-4627中https://www.rfc-editor.org/rfc/rfc462

2022-12-06 11:18:50 1389

原创 C++------static_cast和dynamic_cast详解

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入类继承关系图注:从图中可以看出,派生类不仅有自己的方法和属性,同时它还包括从父类继承来的方法和属性。当我们从派生类向基类转

2021-09-27 15:48:50 1658 1

原创 简单易使用的代码库

简单易使用的代码库。具体见http://code.google.com/p/very-small-library/

2020-09-07 15:29:05 172

原创 BST---二叉搜索树

二叉查找树(Binary Search Tree),也称二叉搜索树、有序二叉树(ordered binary tree),二叉排序树(orted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查找树;没有键...

2020-07-31 10:40:06 210

转载 C++类中的6个默认函数之构造函数、析构函数、拷贝构造函数、赋值运算符重载函数

类中6个默认函数,如果在定义类时没有定义这6个函数的某几个,编译器会提供相应的默认函数,如果定义了这6个函数的某几个,编译器则不会提供相应的默认函数,系统提供的这6个默认函数都是公有的,都是内联的构造函数析构函数拷贝构造函数赋值运算符重载函数取地址操作符重载函数const修饰的取地址操作符重载函数构造函数1.构造函数与类名相同,并且没有返回值2.构造函数只能系统调用,不能手动调用构造函数3.构造函数有this指针4.构造函数可以重载析构函数1.析构函数的函数名是~+类名(例:c

2020-07-24 09:40:38 331

转载 const关键字的使用

转载:https://blog.csdn.net/rabbitguiming/article/details/40854481 使用const提高函数的健壮性看到const关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程

2020-07-23 11:31:15 71

原创 C/C++------小鱼的游泳时间

题目描述伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按24小时制计算),它发现自己从a时b分一直游泳到当天的c时d分,请你帮小鱼计算一下,它这天一共游了多少时间呢?小鱼游的好辛苦呀,你可不要算错了哦。输入输出格式输入格式:一行内输入4个整数,分别表示a,b,c,d。输出格式:一行内输出2个整数e和f,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数f应该小于

2020-07-21 14:09:27 2431

原创 Linux下c语言编程之makefile文件的编写

首先,add.c文件编写#include"test.h"#include<stdio.h>int add(int a,int b){ return a+b;}int main(){ printf(" 2 + 3 = %d\n",add(2,3)); printf(" 3 - 2 = %d\n",sub(3,2)); return 1;}sub.c文件编写#include"test.h" int sub(int a

2020-07-21 09:22:32 349

原创 C++版本---括号匹配问题

括号匹配问题,用到了栈#include <iostream>#include <stack>#include <string>using namespace std;int main(){ string str; getline(cin, str); stack<char> s; for (int i = 0; i < st...

2019-10-18 11:11:00 524

转载 MD5算法破解思路

https://blog.csdn.net/wufaliang003/article/details/79794982小明:老师,上次您讲了MD5算法。用它生成的信息摘要,真的可以被破解吗?老师:有很多种方法可以破解,不过需要明确一点,这里所谓的破解,并非把摘要还原成原文。为什么呢?因为固定128位的摘要是有穷的,而原文数量是无穷的,每一个摘要都可以由若干个原文通过Hash得到。小明:如果是...

2019-10-07 19:42:24 880 1

原创 字符串反转c语言递归、非递归

#include<iostream>#include<vector>#include<list>using namespace std;// 递归实现字符串反转 /*******递归的方式写字符串长度函数*******/int reverse(char *str) { if(*str == '\0') //当传入的字符串中没有字符...

2019-10-07 17:30:23 374 1

原创 C++ 智能指针

使用智能指针的缘由考虑下边的简单代码:int main(){int *ptr = new int(0);return 0;}  就如上边程序,我们有可能一不小心就忘了释放掉已不再使用的内存,从而导致资源泄漏(resoure leak,在这里也就是内存泄漏)。2. 考虑另一简单代码:int main(){int *ptr = new int(0);delete pt...

2019-09-22 13:17:22 81

原创 C++ STL --- map

1、map简介map,顾名思义就是地图。其实就是key,value的对应。当你需要快速的获取对应key的value的时候,就可以使用map了。例如一个人是有名字,但是这个人还有其他的属性,例如年龄,性别等等。这个人就会被封装为一个对象。如果有很多个人,我们需要快速的根据一个人的名字获取对应名字的对象,这个时候map就有用了。如果采用数组,我们需要遍历整个数组,才可以根据名字找到这个人。如果是m...

2019-09-19 21:31:55 143

原创 C++版本 非递归 --- 二分查找

二分查找思想:1、数组是有序的,比例按从小到大排序;2、查找的key每次和中间值比较,如果key小于mid查找mid左侧的数组部分;如果key大于mid,则查找mid右侧的数组部分;如果相等,则直接返回mid。输入:排序数组-array,数组大小size,查找值-key返回:返回数组中的相应位置,否则返回-1#include <iostream>using namespa...

2019-08-26 20:04:50 148

原创 递归式 --- 二分查找

#include #include #include using namespace std;int Search(vector& v,int left,int right,int key){int pos = -1;if(left <= right){int mid = (right - left +1)/2 + left;if(key < v[mid])...

2019-08-26 19:34:06 132

原创 C++ STL 如何使用键盘读取一行已知个数的数字并存入vector中

最近做了一些笔试题,发现笔试题那个系统需要手动输入数据,为此写了一篇博客。#include<iostream>#include<vector>using namespace std; int main(){ vector<int>a; int n; cin >> n; int b; for(int i = 0;i &lt...

2019-08-26 18:39:13 950

原创 有两个数组,里边存储的数据是有序的,求两个数组中的中位数(不允许使用扩容机制,不允许在创建一个数组)

有两个数组,里边存储的数据是有序的,求两个数组中的中位数(不允许使用扩容机制,不允许在创建一个数组)![在这里插入图片描述](https://img-blog.csdnimg.cn/20190824163616609.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9n...

2019-08-24 16:37:25 121

转载 重载、覆盖、隐藏的区别

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/hexi_2000/article/details/4392107学习过C++基础课程的人,对重载函数的概念相对熟悉一些,但是对覆盖和隐藏就相对陌生了,在编程技术的学习上,你会发现一个规律,很多知识点你都知道,但是一旦用起来,就常常出错,...

2019-08-22 15:47:21 102

原创 C++ --- 构造函数和析构函数能不能定义为虚方法, 为什么??

A.面试常问问题之一:“析构函数能不能写成虚函数”“析构函数什么时候必须写成虚函数”?大家肯定都知道答案了,来看看以下内容,再熟悉下,然后也理理思路,你虽然知道,但能不能有效的说出来,那还真不一定!“析构函数能不能写成虚函数?”析构函数是可以写成虚函数的,由于虚函数的地址是要写在虚函数表中的,而虚函数表的地址是记录在虚函数指针vfptr当中的,vfptr一般情况都部署在对象的前4个字节,因此,...

2019-08-22 15:18:00 223

原创 泛型算法---find与search的区别

Excel中的search函数和find函数都可以在指定的文本字符串中查找另一个文本字符串第一次出现的位置。其语法分别为:search:search(find_text,within_text,[start_num])find:find(find_text, within_text, [start_num])其参数为:find_text 要查找的文本within_tex...

2019-08-22 12:26:23 988

原创 fork与vfork的的区别

vfork用于创建一个新进程,而该新进程的目的是exec一个新进程,vfork和fork一样都创建一个子进程,但是它并不将父进程的地址空间完全复制到子进程中,不会复制页表。因为子进程会立即调用exec,于是也就不会存放该地址空间。不过在子进程中调用exec或exit之前,他在父进程的空间中运行。为什么会有vfork,因为以前的fork当它创建一个子进程时,将会创建一个新的地址空间,并且拷贝父进程...

2019-08-19 16:31:53 168

原创 如何实现一个不可以被继承的类

如何实现一个不可以被继承的类解题思路:这个问题大家第一时间想到的答案是什么样子的呢,如果你牢固掌握了 C++继承与多态部分的内容,记住了基类和派生类的访问权限,记住了派生类对象的构造过程,那么你能够给出该问题的答案。由于派生类对象的构造,要先构造基类部分,而且派生类可以继承基类的 private 成员,但是却不能访问,因此可以把基类的构造函数实现成 private 私有的构造函数,那么...

2019-08-19 15:59:27 118

原创 C++迭代器失效问题

C++中STL中vector、list容器,怎样才能使迭代器失效1、删除操作会使迭代器失效 当我们删除8这个元素的时候,我们会用到迭代器p1,而不会用到p2,这个时候8后面的元素会前移,对照上面两个图可知迭代器p2两次访问的数据不一致,这个时候得带器p2就已经失效了,p1元素后面的所有迭代器都会失效。 解决方法:这个时候我们只需把得带器p2弄失效就可以了2、插入操作会使迭代器失效...

2019-08-19 13:23:05 209

原创 数据结构---B树总结

B树总结这里的B树,也就是英文中的B-Tree,一个 m 阶的B树满足以下条件:每个结点至多拥有m棵子树;根结点至少拥有两颗子树(存在子树的情况下),根结点至少有一个关键字;除了根结点以外,其余每个分支结点至少拥有 m/2 棵子树;所有的叶结点都在同一层上,B树的叶子结点可以看成是一种外部节点,不包含任何信息;有 k 棵子树的分支结点则存在 k-1 个关键码,关键码按照递增次序进行排列...

2019-08-16 16:38:55 255

原创 排序算法-理论

1.直接插入排序:想象成给一个已经有序的数组中插入数据,所以只要从后往前找,找到比它小的数字 插入到它的后边即可。先取第一个数字,一个数字肯定有序,再取第二个数字,从它的前一个开始找, 找到比它小的数字,插入到它的后面即可,如果不小于它则把该数字直接插入到当前的位置 时间复杂度:O(n*log(n))越有序越快 空间O(1) 稳定性:根据自己的实现。 ...

2019-08-14 20:44:27 174

原创 select poll epoll

一、使用方面: 1 select函数通过三个fd_set结构体变量分别给内核传递用户关注的所有可读、可写、异常事件,这使得select不能、 处理更多的事件类型,并且内核也通过这三个结构体变量返回就绪的文件描述符,所以每次使用之前,都必须重新 设置这三个结构体变量。 2 poll函数将用户关注的文件描述符以及其关注的事件、内核返回的文件描述符上发生的事件分离开表示,并...

2019-08-14 18:34:33 312

原创 AVL、红黑树总结

AVL树BST树在最差的情况下,和顺序查找效率相当,退化成了线性结构,因为BST树的左右子树高度差太大,如下由此引出了AVL树,AVL树是带有平衡条件的BST,这个平衡条件必须容易保持,且需要保持树的深度O(logn),(1)AVL树仍然是一颗二叉树,满足递归定义;(2)其次又是一颗BST树,满足有序;(3)每个节点左右子树高度差的绝对值不能超过1.AVL 树效率分析查找的时间复杂...

2019-08-13 21:09:44 172

原创 八大排序-快排

快排是速度最快的排序,时间复杂度为O(logn),空间复杂度O(logn),不稳定#include <stdio.h>#include <stdlib.h>#include <time.h>void Show(int *arr,int len){ for(int i=0;i<len;i++) { printf("%d ",arr[i]);...

2019-08-13 19:10:29 95

原创 字符串替换问题

/*字符串替换:1.一个换一个函数将字符串中的字符’‘移到字符串的前部分,前面的非’’字符后移,但不能改变非’‘字符的先后顺序,函数返回串中非’'字符的数量。(要求尽可能的占用少的时间和辅助空间)。例如:原始串为autoch**ips,处理后为******autochips,函数返回9.*/#include<stdio.h>#include<vector>...

2019-08-13 11:46:09 266

原创 C/C++区别

1、C的函数不能重载,C++函数可以重载 : 因为C的函数符号的生成只于函数的名相关,C++还与参数相关2.const的区别 C const定义的数据是常变量,不一定要初始化,不能用来定义数组,可用指针修改,不能作为左值 C++ 常量,必须初始化,可用来定义数组,在编译阶段直接将用处的数据都替换成初始化的值3.函数的参数列表 C 函数不带参数,表示该函数是一个可变参...

2019-08-10 12:59:55 188

原创 八大排序---排序算法比较总结

排序名称:直接插入排序(insertsort)时间复杂度:O(n平方)时间复杂度备注:若查找时从前往后找,最好的情况(1 2 3 4 5),时间复杂度还是O(n平方),因为在查找合理位置的时候找的次数太多,所以改进方法是找合理位置的时候是从后往前找,而不是从前往后找;所以最好的情况(必须从后往前找)时间复杂度是O(n)空间复杂度:O(1)空间复杂度备注:稳定性:稳定稳定性备注:稳定,因...

2019-08-04 17:04:38 234

原创 设计模式 --- 观察者模式( Observer 模式 )

监听者处理事件观察者观察事件通知感兴趣的监听者取处理事件从定义上看:观察者模式 是当对象间存在一对多关系时,则使用观察者模式 ,比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式 属于 行为型模式。其实,我所理解的 观察者模式 ,就是观察和被观察对象之间的关系,好比说,在拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价。在这里面,拍卖师是观察者,而那些竞价者,是被观...

2019-08-04 16:25:42 182

原创 设计模式---工厂模式

工厂模式分为三种:1、简单工厂模式所有的产品由一个工厂生产就是工厂产产品,一个工厂可以产多种产品工厂模式属于创建型模式,是C++中最常见的设计模式之一。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。下面我会具体分析工厂模式各个方面。例如:一号产品产苹果二号产品产香蕉class Fruit{public: Fruit(...

2019-08-04 15:31:18 150

原创 C++设计模式---单例模式

单例模式的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中 一个类只有一个实例,即一个类只有一个对象实例。版本一:使用懒加载(快加载),只有在使用时才实例化class Singleton { public: static Singleton* getIntance() { if (pobject == NULL)//懒...

2019-08-04 14:39:42 160

原创 C++STL <vestor> <list> <deque>

C++标准模板库提供三种顺序容器:vector,list和deque。vector类和deque类是以数组为基础的,list类是以双向链表为基础的。矢量(vector)类提供顺序表。下标运算符[ ] 有效。矢量的内存用尽时,矢量自动分配更大的连续内存区,将原先的元素复制到新的内存区,并释放旧的内存区。内存分配是由分配子(allocator)完成。矢量可以用来实现队列、堆栈、列表和其他更复杂的...

2019-08-03 21:00:36 144

原创 数据结构---八大排序时间复杂度、空间复杂度等比较

2019-08-03 20:54:24 278

原创 力扣练习题----两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers...

2019-07-28 10:25:08 230

原创 C---归并排序

合并排序(MERGE SORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的子序列组成,每个子序列的长度为1,然后再两两合并,得到了一个 N/2 个长度为2或1的有序子序列,再两两合并,如此重复,值得得到一个长度为N的有序数据序列为止,这种排序方法称为2—...

2019-05-21 21:14:32 115

原创 C++对象的生存周期

对应下面的代码和解析来学习这节知识,代码都是可运行的,在VS2012中就可以#includeusing namespace std;#pragma warning(disable:4996);/*1.对象的生存周期*/class Object{public:Object(int num){cout << “Object::Object(int)” <&lt...

2019-05-21 20:06:12 232

空空如也

空空如也

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

TA关注的人

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