
c++技术
文章平均质量分 64
SuperYang_
山高人为峰
展开
-
Qt自定义步骤引导按钮
实际在开发项目过程中,由一些流程比较繁琐,为了给客户更好的交互体验,往往需要使用step1->step2这种引导对话框或者引导按钮来引导用户一步步进行设置;实现起来其实也并不复杂,主要是对外接口可以设置多个标题文本,以及当前高亮显示的索引即可。原创 2024-12-28 12:13:27 · 365 阅读 · 0 评论 -
mingw c++/qt使用grpc方法详细教程
在GRPC里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多RPC系统类似,gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个GRPC服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。GRPC调用流程:1> 客户端(gRPC Stub)调用 A 方法,发起 RPC 调用。原创 2024-09-09 11:25:37 · 2442 阅读 · 1 评论 -
windows mingw下如何使用breakpad生成minidump并查看crash信息
Breakpad是一个开源的跨平台crash捕捉工具,由谷歌和crashpad的前身用C++编写。它支持 macOS、Windows 和 Linux,可在进程崩溃时,记录.dump文件,并提供了相对应的工具来解析.dump文件帮助我们查找C和C++堆栈踪迹。原创 2024-09-21 11:25:14 · 1279 阅读 · 0 评论 -
c++11新特性-constexpr
constexpr和class constexpr还能够声明用户自定义类型;int main()以上代码自定义了一个结构体X,并且使用constexpr声明和初始化了变量x。//无法在编译期计算解决上述问题的方法很简单,只需要用constexpr声明X类的构造函数,也就是声明一个常量表达式构造函数,当然这个构造函数也有一些规则需要遵循。原创 2024-07-20 18:28:34 · 845 阅读 · 0 评论 -
c++11新特性-自动类型推导
C++11中auto并不表示一种实际的数据类型,只是一个类型声明的“占位符”。使用auto声明的变量必须进行初始化,为了让编译器推导出它的实际类型,在编译时将auto占位符替换成正真的类型。但是auto并不是万能的,并不能在任意场景下推导出变量的实际类型,使用语法为auto 变量名 = 变量值;// x是浮点型double// y是整形int// z是字符型charauto nb;// error,变量必须要初始化// 语法错误, 不能修改数据类型。原创 2024-07-20 17:21:58 · 1021 阅读 · 0 评论 -
使用qt creator配置msvc环境(不需要安装shit一样的宇宙第一IDE vs的哈)
习惯使用Qt编程的童鞋,尤其是linux下开发Qt的童鞋一般都是使用qt creator作为首选IDE的,通常在windows上使用Qt用qt creator作为IDE的话一般编译器有mingw和msvc两种,使用mingw版本和在linux下的方式基本上一样十分简单,不赘述;但是使用msvc版本的就需要费点功夫搭建环境,然而在windows上大多数情况下你不得不适配各种第三方用msvc编译出来的第三方库,就逼着你使用msvc版本的编译器,使用msvc编译器通常的方案是使用vs+qt的方式来弄;原创 2024-07-07 09:39:51 · 3422 阅读 · 3 评论 -
c++如何实现类名创建类对象(反射)
c++开发过程中使用工厂模式创建各种类对象的时候可能需要写一堆的’if-else’函数来根据传入的参数类型创建不同的类对象;步骤: 1> 创建一个单例工厂类, 类中维护一个类名和创建对应类的回调函数的映射关系(map) 2> 需要创建的时候根据传入的类名参数查找对应的回调函数来创建类。这样的效果. 其实就是JAVA中的反射机制的体现, 实际c++本身是不支持的, 但是可以通过曲线救国的方式来实现.核心: 通过回调函数来实现创建.原创 2023-08-07 20:27:37 · 934 阅读 · 1 评论 -
c++使用条件变量实现生产消费问题(跨平台)
思路: 队列中没有元素可以被消费的情况下, 触发条件变量wait, 等待生产线程生产元素之后唤醒继续消费.思路:队列满了的情况下, 触发条件变量wait, 等待消费线程消费后唤醒继续生产.原创 2023-08-07 20:25:39 · 343 阅读 · 1 评论 -
vscode自动添加注释说明
1> 按’ctrl + shift + p’打开配置项目,选择’Preferences:Open User Settings(JSON)’2> 点击右上角’…‘按钮,选择’Install from VSIX’(联网状态可以直接搜索doxygen下载安装)3> 配置完成后即可使用,在文件头或者函数前都可以输入’/**'然后按回车即可生成固定格式的注释。2> 黏贴以下配置内容到配置文件中,注意修改authorName等名字信息,可以全局替换一下。1> 打开vscode软件,点击左侧插件管理菜单。原创 2023-08-07 20:23:11 · 1623 阅读 · 0 评论 -
qt结合opencv videocapture图像采集
1. 核心代码#ifndef FRAMECOTHREAD_H#define FRAMECOTHREAD_H#include <QThread>#include <QTimer>#include <QString>#include <QLabel>#include "opencv.hpp"using namespace cv;...原创 2019-01-27 11:40:37 · 3761 阅读 · 1 评论 -
哈夫曼编码c++/qt实现
接续上一篇文章《哈夫曼树与哈夫曼编码》:http://blog.youkuaiyun.com/superyang_/article/details/79276502--------main.cpp--------#include <QCoreApplication>#include "Huffman.h"#include <QDebug>#include <QString>...原创 2018-02-08 11:26:30 · 1991 阅读 · 1 评论 -
c++/qt设计模式-装饰者模式
文章中部分内容和思路来自《Head First设计模式》模式定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案模式类图典型案例1.案例说明去咖啡店喝咖啡,我们可以要求店员在咖啡中加各种调味品,如牛奶、摩卡等。我们可以将这些调味品称为装饰2.代码实现------------IComponent.h------------#ifndef ICOMPONENT_H#defi...原创 2018-02-08 11:00:15 · 739 阅读 · 0 评论 -
c++/qt设计模式-命令模式
文章中部分内容和思路来自《Head First设计模式》模式定义将"请求"封装成对象,以便使用不同的请求、队列或日志来参数化其他对象。命令模式也支持可撤销的模式类图典型案例1.案例说明假设客户去银行办理存取款业务,业务员根据客户业务的不同对客户账户进行存取款操作。在这个案例中,我们可以将业务员看做命令的发出者,客户账号看做命令接收者,具体命令是存款取款2.代码实现----------ICommon...原创 2018-02-08 09:49:09 · 2042 阅读 · 1 评论 -
哈夫曼树与哈夫曼编码
文章中部分内容和思路来自《大话数据结构》准备知识路径长度:从树中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上的分支数目称作路径长度。例如图6-12-4(a)中从根节点到D节点的路径长度为4树的路径长度:从根节点到每个节点的路径长度之和。例如图6-12-4(a)中树的路径长度为1+1+2+2+3+3+4+4=20带权路径长度:从树中一个节点到根节点之间原创 2018-02-07 10:13:44 · 1067 阅读 · 0 评论 -
c++/qt 23种设计模式
模式分类23种模式传送门命令模式:http://blog.youkuaiyun.com/superyang_/article/details/79286046外观模式:http://blog.youkuaiyun.com/superyang_/article/details/79267148组合模式:http://blog.youkuaiyun.com/superyang_/article/details/79269497观察者模......原创 2018-02-09 09:45:42 · 4263 阅读 · 0 评论 -
数据结构-堆
文章中部分内容和思路来自《数据结构、算法与应用 c++语言描述》预备知识优先级队列:是0个或多个元素的集合,每个元素都有一个优先级或值,对优先级队列执行的操作有:1)查找一个元素 2)插入一个新元素 3)删除一个元素,与这些操作相对应的函数是top,push和pop。在最小优先级队列中,查找和删除的元素都是优先级最小的元素;在最大优先级队列中,查找和删除的元素都是优先级最大原创 2018-02-02 13:07:25 · 325 阅读 · 0 评论 -
数据结构-堆排序
文章中部分内容和思路来自《数据结构、算法与应用 c++语言描述》接续上一篇文章《堆》:http://blog.youkuaiyun.com/superyang_/article/details/79235370定义先用n个元素初始化一个大根/小根堆,然后逐个从堆中提取提取元素并输出。示意图假设需要排序的n个元素已构成大根堆,以下图为例:原创 2018-02-05 11:54:15 · 287 阅读 · 0 评论 -
c++/qt设计模式-组合模式
文章中部分内容和思路来自《Head First设计模式》模式定义允许你将对象组合成树形结构来表现"整体/部分"层次结构。组合能让客户以一致的方式处理个别对象以及对象组合模式类图典型案例1.案例说明组合模式的条件比较苛刻,能够很好反应该模式的一个案例是对于计算机文件系统的遍历。《Head First》中举了一个菜单和菜单项的例子,大同小异2.代码实现------File.h------#ifndef...原创 2018-02-06 13:19:20 · 2244 阅读 · 1 评论 -
c++/qt设计模式-外观模式
文章中部分内容和思路来自《Head First设计模式》模式定义提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。模式类图典型案例1.案例说明在我们使用电脑的过程中,我们只需要按下电源键整个电脑就能正常开机工作。关于机器内部各部件的工作情况我们并不关心,这就是外观模式的一种体现。2.代码实现----------Computer.h----------#i...原创 2018-02-06 09:48:34 · 797 阅读 · 2 评论 -
c++/qt设计模式-适配器模式
文章中部分内容和思路来自《Head First设计模式》模式定义将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间模式类图1.对象适配器:2.类适配器:[ps:对象适配器和类适配器使用了两种不同的适配方式,对象适配器使用组合实现适配,类适配器使用继承实现适配]典型案例1.案例需求不同国家的充电头和插座的设计标准不同,例如中国采用两孔扁平的插头和插座,而德国习惯使用三...原创 2018-02-05 16:36:48 · 948 阅读 · 0 评论 -
c++/qt设计模式-模板方法模式
文章中部分内容和思路来自《Head First设计模式》模式定义在一个方法中定义一个方法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模式类图典型案例1.需求说明客户去银行办理业务的基本流程一致,都是先取号排队,然后在柜台办理相关业务,最后给出评价。其中不同客户办理的业务可能不同,我们放到子类中去实现2.代码实现-------------...原创 2018-02-05 14:11:47 · 1513 阅读 · 1 评论 -
c++/qt设计模式-观察者模式
气象局需要我们构建一套系统,该系统有两个公告牌,分别用于显示当前天气状况(湿度、温度、气压)和未来几天的天气预报。当气象局发布新的天气数据时,公告牌能根据发布的天气数据即时更新。系统应该分为三个部分,其中气象站时刻采集实时天气信息,并将天气数据传送给WeatherData对象,WeatherData根据传送的数据不同状态不断变化,公告牌根据WeatherData的数据变化更新显示。定义了对象之间一对多的依赖,这样一来,当一个对象状态改变时,它的所有依赖者都会收到通知并自动更新。原创 2018-01-12 10:36:02 · 3970 阅读 · 1 评论 -
数据结构-搜索树
文章中部分内容和思路来自《数据结构、算法与应用 c++语言描述》二叉搜索树定义是一颗二叉树,可能为空;一颗非空的二叉搜索树应满足以下条件:1) 每个元素有一个关键字,并且任意两个元素关键字不同;因此,所有元素的关键字唯一2) 在根节点的左子树中,元素的关键字(若有)都小于根节点的关键字3) 在根节点的右子树中,元素的关键字(若有)都大于根节点的关键字4) 根节点的左右子树也都是二叉搜索树图14-1...原创 2018-02-26 15:05:25 · 505 阅读 · 0 评论 -
c++常见问题及解决办法
本文用于记录博主在学习使用c++过程中遇到的问题,提醒自己也方便他人,遇到一个记录一个,持续更新。原创 2018-02-27 13:08:37 · 693 阅读 · 0 评论 -
c++/qt设计模式-迭代器模式
文章中部分内容和思路来自《Head First设计模式》模式定义提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露其内部表示模式类图典型案例1.案例说明中国象棋棋盘上有32颗棋子,提供一种对32颗棋子顺序遍历的方式2.代码实现-------------IChessBoard.h-------------#ifndef ICHESSBOARD_H#define ICHESSBOARD_H#inc...原创 2018-02-09 10:12:43 · 687 阅读 · 0 评论