自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

oRbIt 的专栏

从明天起,做一个幸福的人,喂马、劈柴、周游世界。。。

  • 博客(212)
  • 资源 (11)
  • 收藏
  • 关注

原创 C++ 的 trivially relocatable

移动构造也是有开销的,并且对象移动之后,源对象依然是合法状态,它还需要析构,在一些情况下,这样标准的移动操作完全没必要。存在比移动更快的方式,那就是按位复制,只需将对象的数据复制到另一个地方,就可以在那个地方“还原”出这个对象,这可比普通的移动更有吸引力。

2025-04-25 11:41:41 982

原创 C++ 17 带初始化的 if 和 switch 语法

将初始化和条件判断写在一行代码中,用更少的代码实现更多的语义,可以使代码看起来更简短,也能更好地控制变量作用域

2025-04-25 11:40:44 448

原创 C++ 的 if-constexpr

if-constexpr 语法是 C++ 17 引入的新语法特性,也被称为常量 if 表达式或静态 if(static if)。引入这个语言特性的目的是将 C++ 在编译期计算和求值的能力进一步扩展,更方便地实现编译期的分支选择动作。

2025-03-24 11:21:11 1443

原创 C++ override 说明符

override和final作为说明符号,并不是保留的 C++ 关键字,它们只在它们能起作用的地方起说明作用,如果在其他地方出现,它们和普通的符号没有区别

2025-03-18 10:31:28 342

原创 C++ 11 的返回值类型后置语法

C++ 11 引入了一种新的语法形式,就是返回值类型后置(trailing-return-type)语法,也被称为跟踪返回值类型语法或后置返回值类型。

2025-03-14 11:28:34 798

原创 C++ 的位域(BitFields)

位域的定义使用 struct 关键字,但是和定义 struct 不同的是,它需要为每个分量(属性)指定长度,但是每个分量可以和数据结构中其他正常的元素一样使用和初始化。

2025-03-12 09:37:11 1090

原创 C++ 的时间库之八:format 与格式化

在《C++ 的时间库之五:time_point》和《C++ 的时间库之三:Duration》两篇文章中,我们增补了关于字符串格式化输入和输出的内容,但是因为篇幅关系,没有展开详细介绍相关的格式支持,所以本篇的目的就是全面介绍 format 库对时间库的格式化支持。

2025-03-10 09:50:28 1014

原创 C++ 的时间库之七:自定义时钟

chrono 库定义了很多时钟,仿照这些时钟的实现代码做一个自定义的 clock 非常简单。

2025-03-04 12:50:10 941

原创 C++ 的时间库之六:日历和时区

C++ 11 的时间库提供了各种时钟、时间点以及时间间隔的计算与表达,但是却没有提供日期相关的类型,也没有提供与时区有关的本地时间转换等支持组件,所以用起来不是很顺手。直到 C++ 20 终于补齐了这块短板,时间库具备是时间、日期和时区的完整支持

2025-02-27 10:38:41 842

原创 C++ 的时间库之五:time_point

C++ 的时间点有两个关键标识,一个是时间点计时用的时钟类型,另一个是记录时间点从时钟的纪元起点开始的时间间隔类型。时钟类型决定了时间点的计时方式和时间纪元起点,时间间隔类型决定这个时间点的计时单元是毫秒还是天。

2025-02-26 09:28:12 975

原创 C++ 的时间库之四:Clock

除了时间纪元的起点不同,不同的系统内时间间隔的计数精度也不一样,这就造成了计算机系统中时间记录方式的差异。为了区分这种差异,C++ 11 开始引入了系统时钟类型的概念,不同的时钟,对时间的理解和计算也不一样。

2025-02-25 10:43:39 612

原创 C++ 的时间库之三:Duration

C++ 的时间库主要有三部分组成,分别是时钟类型、时间点和时间间隔。时钟类型决定了计时方式,时间纪元的起点,时间间隔用于记录一段持续时间的长短,时间点是一种时钟类型在某个时间点的计数。时间间隔与时钟类型无关,也相对简单,所以先介绍一下时间间隔。

2025-02-24 10:37:01 667

原创 C++ 的时间库之二:Ratio

从现在开始,我们开始介绍 C++ 风格的时间处理,在这之前,首先要介绍 std::ratio。因为 C++ 的 `chrono`库中的时间段(duration)定义离不开ratio,不了解 ratio,就很难理解duration 的定义。

2025-02-18 11:21:13 893

原创 C++ 的时间库之一:C 语言传统

在 C++ 11 标准之前,C++ 的代码在处理跟时间有关的内容时,沿用的是 C 语言的库。C++ 11 引入了 chrono 库,经过 C++ 17 和 C++ 20 的补充,现在的 chrono 库已经完善。但是在介绍 C++ 的 chrono 库之前,了解一下 C 语言的时间处理方法是十分必要

2025-02-14 13:55:51 1983

原创 C++ 的 get 和 get_if

介绍 std::get 和 std::get_if 函数,以及如何让自定义对象支持这两个函数

2025-02-13 15:48:39 1097

原创 C++ 的 visit 函数

std::visit() 函数是 C++17 引入的一个得力工具,它可以让你针对一个 std::variant 的当前活动类型调用与之匹配的函数,换言之,它可以基于 std::variant 的实际活动类型完成一些函数分派(Dispatch)动作

2025-02-11 13:16:36 1535

原创 C++ 17 的 std::byte 类型

在大多数平台上,字节(也被称为 8 位组),是计算机程序存储数据的基本单位。但是不幸的是,C++ 一直没有字节类型。有人会问 char 不是吗?char 还真不是,它是一个字符类型,在 C++ 的世界里一直被认为是整型数的一种,只是在大多数系统中恰好也是 8 个比特位而已。

2025-02-10 14:51:53 1066

原创 C++ 23 的栈踪迹库(stacktrace)

许多编程语言都提供调用栈踪迹回溯的功能,在错误发生的时候,除了报告错误发生的位置,还能输出函数调用栈信息。现在,C++ 也有自己的栈踪迹库了

2025-02-08 16:35:27 1086

原创 C++ 的 CTAD 与推断指示(Deduction Guides)

类模板参数推导(Class Template Argument Deduction),C++ 20 对聚合类型的支持以及显示推断指示

2025-01-16 15:27:07 1102

原创 C++ 的 pair 和 tuple

C++ 的 pair 和 tuple 在 C++ 标准中的演化

2025-01-10 13:07:47 1247

原创 现代 C++ new 和 delete 的演化

现代 C++ new 和 delete 从 C++ 11 到 20 的演化

2025-01-08 10:41:43 1050

原创 C++ 的 error_code 之三:自定义 error_condition

以访问被拒绝错误为例,Windows 系统上的设备驱动会返回 0xC0000005,而 Linux 系统上的设备驱动会返回 13。支持库要求同时支持两种操作系统,希望提供一种与设备无关的错误码定义,让支持库不需要根据操作系统的差异用两套代码判断错误码,这种情况就需要使用自定义的 error_condition。

2025-01-03 09:32:50 944

原创 C++ 的 error_code 之二:自定义 error_code

回答第一部分遗留的问题,std::errc 枚举值怎么就成了 error_condition 常量?上面这行代码背后是什么原理呢?

2025-01-02 10:47:37 690

原创 C++ 的 format_to 和 format_to_n 函数

std::format_to() 和 std::format_to_n() 则提供了对应的迭代器版本

2024-12-31 10:31:58 532

原创 C++ 的 error_code 之一:基本概念

有一些人将错误码机制和异常处理机制对立起来,认为是两种互斥的错误处理逻辑,其实这是不对的。首先,并不是所有的错误都是异常或以异常的形式出现,其次,异常中的错误信息也可以用错误码来表示。所以使用错误码和使用异常并不矛盾

2024-12-30 11:05:08 1032

原创 C++ 的 source_location

__FILE__ 和 __LINE__ 在输出日志和调试信息方面扮演重要的角色,现在,C++ 有了 source_location,提供更好的编程体验。

2024-12-27 11:15:18 705

原创 C++ 23 的 print 和 println

你肯定已经厌倦了 C++ 裹脚布般冗长的流式输出控制,但是又对 C 的 printf 的“安全性”心存芥蒂,每当需要格式化输出一些东西的时候,就有种百爪挠心的感觉。现在,不用再挠了,C++ 终于有自己的 print() 函数了。

2024-12-27 11:04:40 1181

原创 C++ 的 format 函数支持自定义类型

format() 对各种数据类型的格式化支持是通过提供 std::formatter 特化版本实现的,扩展 std::formatter 的方法有两种,一种是通过继承方式,从已经存在的 std::formatter 版本派生新的 std::formatter 特化类,另一种是实现一个完整的 std::formatter 特化版本

2024-12-27 11:01:03 1230

原创 C++ 的衰退复制(decay-copy)

要理解为什么 C++ 会有衰退复制(decay-copy)这个需求,需要了解一下 LWG issue 929 问题的提出,但是要理解这个 issue,最好先复习一下 C++ 模板参数的推导规则。

2024-12-25 12:03:34 1517

原创 C++ 基于范围的 for 循环与版本演化

介绍基于范围的 for 循环语法糖从 C++ 11 到 26 的演化,以及如何让自定义对象也支持基于范围的 for 循环

2024-12-20 15:34:10 773

原创 C++ 的 format 和 vformat 函数

介绍 C++ 20 引入的 format 和 vformat 函数,以及 C++ 23 和 26 的持续改进内容

2024-12-18 12:45:47 1671

原创 C++ 的“结构化绑定(Structured Binding)”

C++ 引入了 std::pair 和 std::tuple,可以很方便地定义一些轻量化的数据类型。但是 std::pair 和 std::tuple 的使用也引入了一些问题,最主要的就是代码可读性的下降

2024-10-21 10:37:25 607

原创 C++ 11 的 codecvt 与编码转换

乱码,是程序员最头疼的事儿,处理不同系统的文件,或者使用不兼容的第三方库,只要是程序规模大一点,几乎都会遇到乱码问题。乱码说白了,就是编码与解码不匹配,既然不匹配那就得做编码转换,本文就来聊聊编码转换这点事儿。

2024-10-16 11:19:34 915

原创 C++ 的僵尸标识符(Zombie identifiers)(截止 C++23)

C++ 11 开始引入大量新的语言特性,同时大量旧的内容被淘汰。C++ 版本迭代如此之快,以至于有些内容都还没有见过就已经被淘汰了。正所谓步子迈的太大容易那个什么的,以至于出现了 C++ 11 才引入的内容就在 C++ 17 被删除这样“惨绝人寰”的事情

2024-10-15 10:19:47 642

原创 C++ 的存储类型与新的 thread_local

存储周期只是一个概念,是程序语义范畴内的东西,但不是语法的范畴。存储类型说明符也被称为存储类型,它们是变量声明语法中类型说明符的一部分,它们和变量名的范围一起控制变量的两个独立属性,即存储周期和链接属性。

2024-10-14 12:36:47 759

原创 C++ 的用户自定义字面量

C++ 支持用户自定义的字面量标识符,允许用户对整数、浮点数、字符和字符串类型的立即数提供针对用户自定义对象的字面量后缀。

2024-10-12 11:39:23 937

原创 C++ 的字面量(literal)

终于,C++ 23 决定增加一种针对 std::size_t 的字面量,整数型的立即数后加上 z 或 Z 后缀就可以标识是有符号的 std::size_t 类型字面量

2024-10-11 11:52:08 1066

原创 算法系列之十二:多边形区域填充算法--扫描线填充算法(有序边表法)

二、扫描线算法(Scan-Line Filling) 扫描线算法适合对矢量图形进行区域填充,只需要直到多边形区域的几何位置,不需要指定种子点,适合计算机自动进行图形处理的场合使用,比如电脑游戏和三维CAD软件的渲染等等。 对矢量多边形区域填充,算法核心还是求交。《计算几何与图形学有关的几种常用算法》一文给出了判断点与多边形关系的算法――扫描交点的奇偶数判断算法,利用此算

2024-10-10 16:38:47 1563 1

原创 算法系列之二十三:离散傅立叶变换之音频播放与频谱显示

频谱和均衡器,几乎是媒体播放程序的必备物件,没有这两个功能的媒体播放程序会被认为不够专业,现在主流的播放器都具备这两个功能,foobar 2000的十八段均衡器就曾经让很多人着迷。我用Winamp播放音乐(AOL已经在2013年12月20日停止了Winamp的支持),最早吸引我的原因就是播放界面上那个跳动的频谱,如图(1)所示。我一直想搞清楚这个实现原理是什么,直到我知道有离散傅立叶变换这个东西存

2024-10-10 16:34:46 1027 1

翻译 有保证的复制消除(Guaranteed Copy Elision)

新的 C++ 17 标准带来了很多令人兴奋的新特性,其中一个微小的,不易觉察的改进就是“有保证的复制消除(guaranteed copy elision)”。

2022-06-02 10:10:42 1349

duilib+libcef 显示一个炫酷的罗盘钟(C++)

duilib+libcef 创建一个浏览器控件,通过控件加载 javascript,显示抖音上很火的罗盘钟

2024-06-04

使用 dlib 库的人脸检测识别代码(C++)

使用 dlib 库的人脸检测识别代码,使用 HoG-SVM 检测人脸,使用 5 点面部地标模型进行人脸矫正,使用 resnet 残差网络模型进行人脸特征值提取和比较

2024-05-31

基于 webview2 的 duilib 插件,显示炫酷的罗盘钟

一个基于 webview2 的 duilib 插件,创建一个 CWebView2UI 控件,显示抖音炫酷的罗盘钟

2024-05-30

TabSiPlus_bin.zip

TabSiPlus 最新版本,支持 Source Insight 4.x 版本。

2019-08-25

thunderbird 2_0_0_16 中文语言包

thunderbird 2_0_0_16 中文语言包 用thunderbird的源代码编译后没有中文界面的解决方法可参看链接 http://blog.csdn.net/orbit/archive/2008/09/06/2891622.aspx

2008-09-06

firefox 3_0_1 中文语言包

firefox 3_0_1 中文语言包, 用firefox的源代码编译后没有中文界面的解决方法可参看链接 http://blog.csdn.net/orbit/archive/2008/09/06/2891622.aspx

2008-09-06

boost 用户手册(很多已经翻译成中文)

boost 用户手册(很多已经翻译成中文),针对1.34.1 版本,不过对于学习来说够了

2008-09-06

Google Breakpad 源代码

如果你开发了一个需要发布到用户电脑上的客户端小程序,你当然不会在程序的可执行文件中包含符号表之类的调试信息,你当然也不想麻烦你的用户在程序崩溃时把计算机抱来给你检修——但你却一定想知道,万一你的程序在用户的计算机上崩溃,该如何了解崩溃那一刻程序的状态,特别是对程序调试至关重要的堆栈状态呢? 试试Breakpad吧,无论你的程序运行在Windows平台,Mac OS X平台还是Linux平台,Breakpad都可以帮你截获程序崩溃那一刹那的重要信息。利用Breakpad,你可以在程序中加入自己的灾难响应装置,就像为程序加装安全气囊。你可以获取程序崩溃时可能为后期调试提供帮助的所有重要信息。你还可以在自己的灾难响应代码中把这些重要信息发回给自己,然后利用符号分析和调试工具,在不需要接触用户环境的情况下找到程序的错误原因。

2008-09-06

TCPIP 详解卷2的源代码(一个完整的TCPIP协议栈)

TCPIP 详解卷2的源代码(一个完整的TCPIP协议栈)

2008-09-06

cppunit-1.12.1

单元测试工具 cppunit 的最新版本

2008-09-06

Visual Studio .NET使用技巧手册

Visual Studio .NET使用技巧手册,涵盖VS2002,2003和2005

2008-09-06

Herb Sutter - Conversation 经典对话系列

本人收集并珍藏的Herb Sutter - Conversation经典对话系列,共59篇,包含最后一篇的作者通知,也就是结束语

2008-09-06

用Visual Studio 2005编译Firefox所需要的补丁

用Visual Studio 2005编译Firefox所需要的两个头文件补丁,替换系统原来的头文件可以解决用Visual Studio 2005编译Firefox的错误

2008-08-18

Source Insight文件标签外挂TabSiPlus 源代码

TabSiPlus for Source Insight外挂插件的源代码,版本是0.99b1

2008-01-21

空空如也

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

TA关注的人

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