自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 优雅的CPP——结构化绑定

结构化绑定是 C++17 中引入的一项强大特性,可以使代码更加简洁、清晰和灵活。通过结构化绑定,我们可以更方便地处理元组、数组、容器等数据结构,提高了代码的可读性和可维护性。然而,在使用结构化绑定时,需要注意生命周期、可变性和匹配数量等问题,以避免潜在的错误和不必要的麻烦。

2024-04-17 23:53:23 287

原创 std::optional:解决值存在性问题的利器

std::optional<T>作为一个模板类,用于管理一个可选的容纳值(此处与std::tuple还是有区别的,tuple可以容纳n个值),容纳值可以是自定义类型,甚至是另一个optional。可是通常这些魔幻值需要接口使用者遵守函数的约定,为接口的使用增加了复杂度,基于此C++17提出了std::optional,用于解决值可能存在也可能不存在的问题。如上代码几乎涵盖了optional常用的所有用法,如构造、初始化、赋值、判空、取值。使用std::optional优化如上代码,

2024-04-17 22:31:00 348

原创 [Modern CPP]内联变量——保证变量唯一性的利器

内联变量是 C++17 新增的特性,用于解决头文件中变量多实例化的问题。通过使用inline将变量声明为内联变量,可以确保在多个源文件中只有一个变量实例,避免了链接时的重定义错误。然而,仍需要谨慎使用内联变量,并注意其初始化和定义的位置,以确保程序的正确性和可维护性。

2024-04-15 09:20:57 308

原创 类型安全的瑞士军刀——std::variant

当需要在同一块内存区域中存储不同类型的值且在任何时刻只会存储其中的一种类型时,联合体(union)总是作为首要选择,但是联合体存在如类型安全差、不支持构造函数和析构函数等缺点。为避免union存在的问题,C++17引入一个非常实用且强大的新特性——std::variant。std::variant作为一个多形态的容器,可以容纳一组预定义类型的其中之一,任何时候它都只存储其中一个类型的有效值,提供了严格的类型安全保证。联合体通过.指定变量名进行变量存取,如下示例1。

2024-04-15 09:19:03 448

原创 我的2024年第2个月——慢即是快

2024年,我换打法了,不再一味的追求快速获得结果,里程碑式的结果是很难快速获得,不仅需要机缘的加持,还需要前瞻性的思考和果断的决策,而这些一则是可遇不可求,二则是需要长期积累。水滴石穿,虽慢但获得的结果却是惊人的,总之,贵在坚持——慢即是快。2月份正值春节期间,静下心来学习和写代码的时间减少,导致技术类的文章更新变少。但是这个月我新开了一个专栏用于书写自媒体实操经验。并且实操结果还不错,将在成果项中书写,不在此赘述。

2024-02-29 22:28:11 235

原创 我天,map竟成性能瓶颈了

std::map性能提升

2024-02-29 22:24:28 888

原创 C++20 格式化字符串

std::format 是 C++20 中引入的一个新功能,用于格式化字符串。它位于 头文件中,并提供了一种类似于 Python 中 f-string 的语法来构建格式化字符串。为实现自定义数据类型的格式化,需要为其提供格式化器,格式化器是标准的,可以参考如下进行修改即可。int x, y,z;// 定义一个格式化处理程序//outputstd::format提供类型安全且灵活的字符串格式化方法,使用时要牢记{}的个数不要大于变量的个数;

2024-02-28 12:51:03 618

原创 C++20 concepts

C++20 concepts

2024-02-19 13:02:21 211

原创 C++20 自汇合的多线程

C++20 std::jthread

2024-02-19 13:00:59 1031

原创 聚合体及其初始化———指派初始化器

C++20 指派初始化器

2024-02-03 18:45:07 740

原创 C++ 20飞船运算符

C++20新特性 飞船运算符 三路比较运算符

2024-01-31 21:17:07 542

原创 这是我2024年的第一个月——慢即是快

月度总结

2024-01-31 09:29:12 190

原创 史上最全的const用法总结

const变量的 用法

2024-01-17 00:38:05 390

原创 这才是面试官想听到的答案,C++er必须得看看

谁人不是面试官,谁人又何尝不是被面试者呢,将人问倒从来不是目的,了解他的知识面才是整个面试的根本意义。

2024-01-15 22:45:14 352

原创 【无标题】

C/C++程序员具有直接操作内存的权力,但这也对程序员提出高要求,尤其是要小心内存泄露。可是内存泄漏发生时,也不要怕,windows平台gflags和vs是分析内存泄露的上好工具。

2023-01-02 15:13:27 165

原创 QT封装的指针

C/C++程序员来讲,内存泄露是需要特别关注的点,但是QT提供智能指针,可以避免由于使用原生指针(忘记释放堆上内存)而带来的内存泄露。

2022-11-13 16:17:36 428

原创 QT实现同步异步转换QMetaObject::invokeMethod

如果用QT书写GUI的话,为不影响主界面的工作(不卡主界面),实现工作线程和GUI线程的调度,QT提供了很好的方法——QMetaObject::invokeMethod,并针对该函数提供了多个重载。

2022-11-13 11:25:35 2329 2

原创 cppcheck入门

书写完代码后,如果有工具可以检查代码中存在的未定义行为,对于程序员来讲,乃至对于整个软件开发流程来讲都是大有裨益的。而cppcheck就是好用的工具之一。cppcheck作为C/C++代码检查的利器,使用方便高效,本文作为一个入门篇章,可让读者快速上手。

2022-11-13 09:43:43 2696

原创 C++信号槽sigslot的无脑接入

Qt的信号槽是常用的,但是对于非GUI的部分,最好还是用纯C++的好些,毕竟如果需要将现有的代码直接作为SDK给第三方公司同事使用,还是纯C++的好些。基于此,了解到C++的一个信号槽类库——sigslot。

2022-11-12 17:05:28 413

原创 windbg常用命令

windbg命令错综复杂,本文摘取常用的命令加以介绍,希望读者快速入门,

2022-10-31 22:24:26 529

原创 windbg启动调试器的四种方法

windbg作为windows平台的分析问题的利器,熟悉windbg启动调试的方法事半功倍

2022-10-31 22:09:28 801

原创 windbg调试

windbg作为windows平台进行堆栈分析、排查错误的利器

2022-10-31 13:30:40 1106

原创 obs读写json文件

obs入门到提高

2022-08-30 19:48:47 1271

原创 Windows 32位程序 开启大内存

winows内存不够时怎么办

2022-08-30 19:44:21 177

原创 Windows 32位程序 开启大内存

winows内存不够时怎么办

2022-08-09 18:45:32 307

原创 C++引入第三方库

CMAKE MSVC 引用库的方法

2022-08-07 14:47:05 1024

原创 设计模式--简介

设计模式

2022-07-26 17:40:58 75

原创 史上最全的QgraphicsEffect设置

史上最全的QgraphicsEffect设置废话不说,先看效果上图中针对同一幅图片分别添加了阴影、模糊、着色、透明度设置。QGraphicsBlurEffect,将图片或窗口模糊化,呈现失焦效果代码如下 QGraphicsBlurEffect* blur = new QGraphicsBlurEffect(this); blur->setBlurHints(QGraphicsBlurEffect::PerformanceHint);//设置模糊的性能参数,见下表 blu

2021-09-05 14:41:32 1268

原创 多线程 看这一篇就够了,持续更新

1.多线程的初级创建此处适用于开辟的线程函数仅执行一遍,即非重复性动作头文件:#include"thread"使用多线程时需要通过成员变量来实现,故需要在应用多线程的类的头文件中增加类的成员变量,语法如下: std::thread* m_thrTest{nullptr};在开启线程的位置的语句为: m_thrTest =new std::thread(testProcess,this);其中testProcess线程处理的回调函数,即为实际处理函数。this为传入参数。当启动线程的函数不在类里

2021-05-29 16:25:04 147

原创 qt 图形旋转后的boundingrect计算

参数说明:m_boundingRect为原有的boundingrect;m_rotate旋转角度QPolygonF polyGon = QPolygonF(m_boundingRect); polyGon.takeLast(); QPointF point = polyGon[0] * QTransform().rotateRadians(m_rotate); qreal xmin, xmax, ymin, ymax; xmin = xmax = point.x(); ymin =

2021-03-05 15:15:52 739

转载 静态局部变量

重点前置:作用域仍为局部作用域;生命周期为整个软件/程序的运行周期;首次执行到变量声明处时被初始化,而后不再初始化在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量。我们先举一个静态局部变量的例子,如下:#include void fn();int main(){fn();fn();fn();}void fn(){static int n=10;std::cout<<n<<std::endl;n++;}通常,在函数体内定义了一

2020-12-12 15:36:08 3420

原创 DBG的界面说明

整理自:https://blog.csdn.net/w739639550/article/details/80707765?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecas

2020-05-27 09:57:14 277

原创 获得当前进程的窗口

1.定义结构体typedef struct{ HWND hWnd; DWORD dwPid;}WNDINFO;//定义包含进程id和窗口句柄的结构体

2020-05-27 08:39:43 1087

原创 获取文件/文件夹路径

1.获取文件夹路径 BROWSEINFO bi; TCHAR tchPath[255]; LPITEMIDLIST pidl; LPMALLOC pMalloc = NULL; ZeroMemory(&bi, sizeof(bi)); bi.hwndOwner = NULL; // modified by yongliang.tong 8/29/2019 bi.pszDisplayName = NULL; bi.lpszTi

2020-05-13 11:31:29 460

转载 基于MFC获得主板序列号

const long MAX_COMMAND_SIZE = 10000; // 命令行输出缓冲大小 WCHAR szFetCmd[] = _T("wmic BaseBoard get SerialNumber"); // 获取主板序列号命令行 CString strEnSearch; strEnSearch.Format(_T("SerialNumber")); // 主板序列号的前...

2020-05-06 10:54:47 1473

原创 MFC窗口程序上各控件尺寸的自适应

拖动窗口程序时,窗口上的尺寸总是不能自适应,解决方法在这里

2020-04-23 18:01:55 361

原创 UDP通讯实操,代码可直接使用

1.创建WSAif (WSAStartup(WINSOCK_VERSION,&wsaData))//WSADATA wsaData; { MessageBeep(MB_ICONSTOP); MessageBox("Winsock could not be initialized!", AfxGetAppName(), MB_OK|MB_ICONSTOP); WSACle...

2020-04-23 16:37:16 426

QGraphicsEffect.rar

图片、窗口、控件添加阴影、透明度、着色、模糊效果

2021-09-05

空空如也

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

TA关注的人

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