C++
文章平均质量分 83
C++
worthsen
Just do it!
展开
-
定时器的实现方案:红黑树和多级时间轮
定时器的实现方案:红黑树和多级时间轮转载 2023-06-05 22:15:30 · 176 阅读 · 0 评论 -
序列化与反序列化深入理解
序列化与反序列化深入理解原创 2023-06-05 08:41:53 · 1156 阅读 · 0 评论 -
C/C++/Qt 文件操作 & 效率比较
文件操作 & 效率比较原创 2023-06-03 07:32:30 · 1563 阅读 · 0 评论 -
文件操作--遍历文件并过滤
C++ 跨平台遍历文件并过滤原创 2023-05-31 23:55:28 · 751 阅读 · 0 评论 -
Unix/C/C++进阶--pthread 跨平台
pthread 线程跨平台原创 2023-05-27 14:31:01 · 1492 阅读 · 0 评论 -
转--Linux/Windows下C++设置线程名字方便多线程调试
C++ 线程命令,linux & windows转载 2023-05-26 07:24:58 · 523 阅读 · 0 评论 -
catch2:一个好用的C++单元测试框架
catch2 单元测试转载 2022-07-17 01:38:57 · 2048 阅读 · 0 评论 -
C++数学库Eigen导致工程执行文件变大问题
C++数学库 & Eigen导致工程执行文件变大问题1 背景2 C++数学库整体介绍OpenCVEigen概述文档要求3 Eigen4 知识点4.1 奇异值分解(SVD)4.2 矩阵分解 (decomposition, factorization)4.3 矩阵参考1 背景最近项目中,涉及到矩阵运算,同事使用Eigen数学库实现对应的算法功能后,生成的执行文件很大,大概大了30MB,我是感觉不能忍的。所以就去分析问题在哪,最后发现算法中用到了奇异值分解,这是导致变大的很大一个原因,矩阵其实不是特别原创 2021-01-23 16:09:00 · 690 阅读 · 1 评论 -
信号与槽、回调的生命周期问题
信号与槽、回调的生命周期问题1 介绍2 测试2.1 Qt 信号与槽2.2 回调3参考1 介绍回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。也就是将顶层的函数注册给底层的函数,当底层函数被调用时,能回调到顶层函数。函数A去回调函数B时,B不结束,A函数所申请的资源是不会释放的,从生命周期来看是耦合的,是一个隐藏的风险点。2 测试2.1 Qt 信号与槽2.2 回调3参考1、Unix/C原创 2021-01-23 16:06:35 · 688 阅读 · 0 评论 -
linux--解释器
linux--解释器123参考123参考1、RE/flex2、用C语言写解释器(一)——我们的目标3、linux–Flex add Bison4、Flex++ Bisonc++解析器?原创 2021-01-01 16:30:42 · 946 阅读 · 0 评论 -
Unix/C/C++--数据类型转换、格式化、cpy、精度
Unix/C/C++--数据类型转换1 简介2 等号赋值与memcpy3 各类转换3.1 unsigned char 2 float3.1 unsigned char 2 string4 指针传递4.1 数组指针4.1.1 示例一4.1.2 示例二参考1 简介各类场景下,需要各种数据转化。2 等号赋值与memcpystrcpy等函数的逐字节拷贝,memcpy是按照机器字长逐字进行拷贝的,...原创 2019-12-26 06:58:39 · 743 阅读 · 0 评论 -
Unix/C/C++--回调
Unix/C/C++--回调1 介绍2 理解3 示例3.1 借助接口类实现回调3.2 类之间调用参考1 介绍2 理解3 示例3.1 借助接口类实现回调#include <iostream>#include <string>#include <sigc++/sigc++.h>class Printer :public sigc::trackabl...原创 2019-12-12 19:29:38 · 371 阅读 · 0 评论 -
Unix/C++--libsigc++深入理解
Unix/C++--libsigc++深入理解1 简介2 核心思想3 功能模块分析参考1 简介信号槽是观察者模式的一种实现,或者说是一种升华。信号槽这一术语最初来自 Trolltech 公司的 Qt 库。并成为Qt中最核心功能模块。不用Qt情况下,常用的信号与槽的库有三种:boost的signals,sigslot,sigc++。sigslot优点是不用担心空回调,当回调对象析构时会自...原创 2019-12-01 14:29:15 · 1659 阅读 · 0 评论 -
Unix/C++--关键字mutable、noexcept等
Unix/C++--关键字mutable等1 简介2 mutable2.1 介绍3参考1 简介C++关键字各有自己的特性,有的是辅助封装,如const、private等,有的为了使用方便,不得已破坏封装,如mutable等。2 mutable2.1 介绍mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。在C++中,mutable也是为了...原创 2019-12-01 10:31:48 · 414 阅读 · 0 评论 -
Unix/C++--模板
Unix/C++--模板1 简介2 语法2.1 函数模板的声明和定义2.2 类模板的声明和定义3 模板声明与定义为何不能分开4 使用参考1 简介模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。2 语法2.1 函数模板的声明和定义在函数申明和定义前面,加一个...原创 2019-12-01 09:04:23 · 286 阅读 · 0 评论 -
Unix/C++--using详解
Unix/C++--using详解1 介绍2 用法2.1 申明2.2 命名空间2.3 取代typedef,类型别名2.4 改变从基类继承来的成员的访问级别2.53参考1 介绍2 用法2.1 申明using申明 : using + 限定名称using std::cout;2.2 命名空间using namespace std;2.3 取代typedef,类型别名using 类型...原创 2019-12-01 00:53:14 · 431 阅读 · 0 评论 -
Unix/C++--结构体struct和class类区别
Unix/C/C++--结构体struct和class类区别1 struct 介绍2 class介绍3 异同参考1 struct 介绍2 class介绍3 异同C++中声明一个新的型别,如果不需要虚拟函数,不需要构造,析构方法,那么声明为struct要比声明为class更高效和简洁,因为编译器内部会对此进行分析并且优化。参考1、2、...原创 2019-11-30 21:46:35 · 373 阅读 · 0 评论 -
Unix/C/C++--宏
Unix/C/C++--宏1 简介2 一般应用3 高级应用3.1 功能宏开关模块3.1.1 实现3.1.2 优点3.2 使用一些宏跟踪调试参考1 简介简单的宏定义:#define <宏名> <字符串>例: #define PI 3.1415926带参数的宏定义#define <宏名> (<参数表>) <宏体>例: #de...原创 2019-11-30 20:39:26 · 374 阅读 · 0 评论 -
Unix/C++--容器
Unix/C++--容器1 简介23参考1 简介23参考原创 2019-12-01 12:07:27 · 271 阅读 · 0 评论 -
Unix/C++--信号与槽机制的理解
Unix/C++--信号与槽机制的理解123参考123参考1、signal-slot 信号/槽(也译信号/插槽)机制2、QT 信号与槽原创 2019-11-30 21:59:21 · 1291 阅读 · 1 评论 -
Unix/C/C++--串口通信
Unix/C/C++--串口通信1 串口介绍2 资料汇总2.1 代码3 示例参考1 串口介绍串口叫做串行接口,也称串行通信接口,按电气标准及协议来分包括RS-232、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。RS-232:也称标...原创 2019-11-16 17:06:28 · 728 阅读 · 0 评论 -
Unix/C/C++--线程
Unix/C/C++--线程1 线程的简介2 进程和线程关系及区别2.1 线程2.2 进程3 线程执行模型4 Posix 线程4.1 介绍4.2 示例4.3 主要API的介绍4.3.1 创建线程pthread_create4.3.2 终止线程pthread_exit4.3.3 回收已终止线程的资源pthread_join4.3.4 分离线程pthread_detach参考1 线程的简介多进程...原创 2019-11-16 12:41:56 · 471 阅读 · 0 评论 -
Unix/C/C++--enum
C/C++--enum1 介绍1.1 C中enum1.2 C++中enum2 详解2.1 定义2.2 内存2.2.1 占用内存大小2.2.2 存储区域2.3 作用域2.4 存储类型2.4.1 C2.4.2 C++2.5 类型转换2.6 生命周期2.7 特殊用法3 编译参考1 介绍12个月份名、一周7天名、模式名、状态名,等同类名合集,在程序中会用到。使用宏定义实现,宏名过多,代码松散;使用数...原创 2019-10-31 19:49:13 · 552 阅读 · 0 评论 -
Unix/C/C++---字符串 偏 string
C++---string1 介绍2 char str[] 使用2.1 介绍2.2 常用操作函数3 string 使用3.1 头文件3.2 构造函数3.3 string类的字符操作3.4 特性描述3.5 赋值3.6 连接3.7 比较3.8 子串3.9 交换3.10 查找3.11 替换3.12 插入3.13 删除3.14 迭代器处理3.15 字符串流处理参考1 介绍字符串实际上是使用 null ...原创 2019-10-31 07:28:08 · 583 阅读 · 0 评论 -
Unix/C/C++--文件读写详解
C++---文件读写详解1 介绍1.1 简介2 图解34参考1 介绍1.1 简介#include #include ofstream: 写操作(输出)的文件类 (由ostream引申而来)ifstream: 读操作(输入)的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申而来)2 图解34参考1、C++文件读写详解(...原创 2019-10-31 00:50:19 · 1051 阅读 · 0 评论 -
类成员变量问题
类成员变量,定义时不初始化易出现问题原创 2017-11-01 16:32:58 · 383 阅读 · 0 评论 -
C++--multiple definition of 'xxx'
一、问题1、博主在一个 test.h 头文件中定义了一个 vector 容器,然后在 refer1.h 和 refer2.h 中包含 test.h 文件,然后 refer2.h 中包含 refer1.h,然后出现 multiple definition of 'xxx',关系如下://std::vector<int> stationNum(15); //初始化后,容器...原创 2018-04-27 08:29:49 · 717 阅读 · 0 评论 -
C++--书籍、网站、博主、规范
一、书籍1、《C++ Primer》[第5版],斯坦利·李普曼 (Stanley B. Lippman) (作者), 约瑟·拉乔伊 (Josee Lajoie) (作者), 芭芭拉·默 (Barbara E. Moo) (作者), 王刚 (译者), 杨巨峰 (译者)2、《C++ 大学教程》[第9版],[美] Paul Deitel(保罗·戴特尔),Harvey Deitel(哈维·戴特尔)...原创 2018-04-21 14:23:41 · 404 阅读 · 0 评论 -
C++--函数重载详解
一、背景1、在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。2、上述的问题,C++用函数的重载来实现,C语言中用函数指针来实现。 二、C语言1、C语言下实现功能相似的swap函数,正常如下://void swap1(int *a, int *b); //交换 int 变量的值vo...原创 2018-04-22 08:32:00 · 263 阅读 · 0 评论 -
c++中变量未初始化的隐患
变量未初始化是C++编程中最为常见和易犯的错误之一。但是对于全局变量,我们可以不进行初始化,这个变量会默认的用零进行初始化,但是这通常不是一个好的习惯。我们今天先不探讨全局变量还是静态全局变量。那么对于一个全部变量来说,初始化为零和不初始化(编译器替我们初始化为零)又有什么区别吗?全局变量和局部变量初始化与不初始化的区别 即int x 和 int x=0的区别。int x =0; 跟 int x;...转载 2018-03-06 15:42:08 · 12670 阅读 · 0 评论 -
multiple definition of `xxxx`问题解决及其原理
今天博主在将VS2015工程转换位为Qt工程遇到,调试到最后,出现multiple definition of `xxxx`问题,之前有遇到这问题。做法是,把.h文件中定义的变量放到.cpp中,然后就解决了。当时没仔细分析原因,今天又同时遇到结构出现这问题,最后也从头文件中放在源文件中,至于有没有更好的办法,目前,博主还不确定。望大神指教!博主头文件有加条件编译的#原创 2017-10-26 16:25:51 · 10221 阅读 · 0 评论 -
extern使用方法总结!
一、问题Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义? 二、详解1、函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern。但是引用的时候一样需要声明的。2、全局变量在外部使用声明时,extern关键字是必须的,如果变量没有extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在...原创 2018-08-07 19:45:55 · 236884 阅读 · 15 评论 -
log日志--单例模式、静态类、宏、实现对比
log文件--单例模式、静态类、宏、实现对比1 介绍2 单利模式3 静态类4 宏参考1 介绍2 单利模式3 静态类4 宏参考1、C++——之基于单例模式的日志输出2、宏定义日志输出3、C++ 日志宏定义4、宏–C++实现一个简洁而又强大的日志记录类...原创 2019-10-08 22:15:54 · 856 阅读 · 0 评论 -
C++虚函数介绍以及在多层继承中调用 & 在多重继承中调用
C++虚函数在多层继承中调用 & 在多重继承中调用1 多层继承1.1 介绍1.2 示例2 多重继承1 多层继承1.1 介绍在一个类中的虚函数说明,只对派生类中重定义的函数有影响,对它的基类中的函数不起作用。1.2 示例class A { public: virtual void show() { std:...原创 2019-07-21 10:39:31 · 2694 阅读 · 0 评论 -
换行一类的转义字符处理
换行一类的转义字符处理1 介绍2 QString处理参考1 介绍Unix 系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车 >”,即“\r\n”;Mac系统里,每行结尾是“<回车>”,即"\r"。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windo...原创 2019-07-05 08:04:41 · 8762 阅读 · 2 评论 -
WM20工程详解
1 介绍2 细节2.1 执行程序只能唯一执行使用QShareMemory创建共享内存2.2 类声明代替头文件若头文件中没有创建某个类的对象,可以不写 #include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;类名&amp;amp;amp;amp;amp;amp;amp原创 2019-02-15 21:43:01 · 1235 阅读 · 0 评论 -
C++概述
C++详解参考参考1、C++入门教程,C++基础教程原创 2019-01-22 22:01:21 · 3055 阅读 · 9 评论 -
UML类图详解
UML类图详解一、定义二、发展历史三、优缺点1、优点2、缺点四、工具五、使用六、示例参考一、定义UML,即Unified Model Language,统一建模语言。它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。二、发展历史1994-1995年,由Grady Booch, Ivar Jacobson and ...原创 2019-01-12 18:10:07 · 2033 阅读 · 0 评论 -
c++中STL库 简介 及 使用说明
致谢:http://www.cppblog.com/bhjjkg/articles/94514.html该文章讲的很清楚!作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的。STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心并非昙花一现。本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情。转载 2017-10-27 09:03:48 · 14473 阅读 · 0 评论