自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (4)
  • 收藏
  • 关注

原创 fmt.v8::is_contiguous

【代码】fmt.v8::is_contiguous。

2024-05-19 22:02:23 319

原创 fmt::basic_format_context

里面保存了OutputIt,其实就是std::back_insert_iterator的一个子类,见。用等于号(=),内部会调用push_back。

2024-05-14 10:26:03 90

原创 fmt的format_arg_store以及make_format_args(args...)

注意remove_cvref_t...,它的意思是把每个参数都给去掉const等信息,然后用逗号分隔。remove_cvref_t...的结果就是double,int,std::string。比如args展开是const double, int&, const std::string。一般默认类型都是最后一个。可能跟后面的参数是变长有关。注意,Context是默认的类型:format_context。这个函数是把参数args生成format_arg_store。

2024-05-13 00:17:30 181

原创 fmt的basic_format_string

basic_format_string构造函数用enable_if做了筛选,如果变量类型不能被转换成basic_string_view,那么这个构造函数就不能使用。因为这个类里面有个成员变量是basic_string_view str_;,如果不能转换成功,那么就无法赋值给这个成员变量。就是里面有一个basic_string_view类型的成员变量,其他的都是编译期的检查。果然就把信息给打印出来了。而且还给了其他信息。

2024-05-12 13:18:07 169

原创 变长参数在fmt里的使用,以及一些展开的写法

第二个参数fmt的时候,fmt按照format_string的样式进行推导,此时要确定T...,那么这个T...就是下面的两个参数const double和int了,由于这里用的是模板,而且用的是T&&,所以折叠后就变成了const double&和int&了。format_string的定义中,第一个参数是字符类型char,剩下的是type_identity_t...仔细观察format_to这个函数,基本上只有两个参数类型,一个是OutputIt,一个是...T。

2024-05-11 17:14:53 335

原创 返回类型后置,一个用途是为了逻辑上的体现?

大家一般都是先关心参数,然后最后再看返回的是什么类型。在这里把返回类型后置,可能就是一种逻辑上的体现吧。

2024-05-11 11:52:28 105

原创 关于fmt的用法

打印range:vector,pair、tuple、set和map。对字符串进行截断(只截取字符串的前几个字符),前端补齐空格或者其他字符进行对齐,浮点数的精度,以及四舍五入。用fmt::ptr打印指针。内存管理:分解字符串?长数字加都好分隔符,

2024-05-11 11:48:52 317

原创 fmt::arg的使用

也就是说,如果觉得{}或者{0}的表达方式不够明确,可读性不好。比如说想表达一个公式:x+y=10的计算过程:4+6=10。

2024-05-11 10:25:16 149

原创 一个单例模式中使用std::unique_ptr引起的莫名其妙的COFF损坏的问题(未解决)

看到网上有人说这是一个编译器的bug:有文章解释如下:LNK1254, LNK1284, and LNK1235 linker errors may occur while compiling a C source file with the /clr compiler option (822329)LINK : fatal error LINK1254: metadata for symbol symbol name inconsistent with COFF symbol table<managed

2024-04-30 11:36:17 845

原创 std::ignore的定义

把一个变量赋值给ignore,还行,没有拷贝等动作,不用担心性能损失。

2024-04-29 15:08:49 86

原创 后置返回类型的一种写法,可能是为了消除某种警告

【代码】后置返回类型的一种写法,可能是为了消除某种警告。

2024-04-29 14:27:24 187

原创 【转载】C++代码中将函数返回类型后置有啥好处吗

内容如下:C++代码中将函数返回类型后置有啥好处吗?这种语法是 C++11 新增的,学名叫 trailing return type[1]。翻译过来是,trailing 是后面的、拖尾的意思。书写 int func() 比书写 auto func() -> int 省笔墨。强制所有函数的声明改成后者,就如同强制把所有的变量声明类型改成 auto 一样,代码有异味,变得恶心。

2024-04-29 14:14:55 745 2

原创 Trailing return type (后置返回类型)

【代码】Trailing return type (后置返回类型)

2024-04-29 13:46:20 79

原创 fmt的is_contiguous

【代码】fmt的is_contiguous。

2024-04-28 15:57:20 83

原创 fmt里判断是否为reference_wrapper

reference_wrapper的定义。

2024-04-28 14:32:56 130

原创 conditional的定义

一个泛化版本,一个偏特化版本。

2024-04-23 17:50:56 85

原创 模板的参数,必须给全。不管是隐式还是显式还是默认值

注意,虽然在函数调用时只用到了第一个参数类型,但第二个还是要给出来。不管是显式,还是以默认值的形式。

2024-04-22 09:50:59 211

原创 判断一个类型里,是否同时含有begin和end函数

【代码】判断一个类型里,是否含有begin和end函数。

2024-04-19 11:12:33 90

原创 用数字实例化模板

【代码】用数字实例化模板。

2024-04-12 18:48:31 319

原创 enable_if和类的偏特化

3、偏特化版本的第二个模板参数,推导的结果需要和泛型版本的保持一致。也就是说,void对void,int对int。你要是在偏特化版本里不写第二个参数,那么系统就会用泛型的默认参数类型。2、最泛型的版本必须是要有的,也就是templateclass A;的写法,肯定是参数不足,它需要一个默认的参数来作为第二个参数。发现不支持这种写法,报错:error C2059: 语法错误:“=”参数太少,是因为第二个参数没有直接或间接指定。放到上面呢,还是不行。

2024-04-03 20:11:39 168

原创 enable_if在构造函数模板中的应用

【代码】enable_if在构造函数模板中的应用。

2024-04-02 14:37:23 129

原创 分析:两种不同的函数模板写法,其中一种为何不行

明明void __cdecl test451(int)和void __cdecl test451(double)并不一样啊。注意,左边的写法的第二个模板参数,是默认参数的形式。为何这里采取了默认参数的形式呢,本意是想让编译器来走sfine的流程,用户不用指明具体的类型。$test451@HH@@YAXH@Z,也就是void __cdecl test451(int)意思是,在实例化double的情况的时候,提示默认参数被重定义了。

2024-04-02 12:27:39 860

原创 利用类型,做函数模板的“重载”

还有一种写法,就会编译失败,仔细分析分析?typename=相当于使用默认的类型,并省略了一个名字。

2024-04-01 10:11:22 155

原创 用enable_if来控制多个不同参数的流程

22,23和24走第二个函数。27,29和30走第三个函数。

2024-03-29 15:44:22 172

原创 模板实战:函数不需要特化或者偏特化是吧,因为可以重载?只有类才有。

2、需要其他参数来初始化EditElementHandle,比如DgnHistory::FarElementID,或者ElementId和std::wstring。对于2和3,提供对应参数的重载函数(非模板,但名字一样)。对于4,有了以上的实现,拿到了EditElementHandle的实例,第4就很容易实现了。4、对于3,想在EditElementHandle生成之后,再统一添加一些数据在其身上。3、针对1和2,想提供统一的接口来生成EditElementHandle对象。

2024-02-28 16:07:38 217 1

原创 为了正常查找,std::sort如果用了排序规则,那么std::lower_bound和std::binary_search也要用这个规则,除非自己知道自己干什么

【代码】为了正常查找,std::sort如果用了排序规则,那么std::lower_bound和std::binary_search也要用这个规则,除非自己知道自己干什么。

2024-02-26 10:47:27 91

原创 std::binary_search和std::lower_bound的关系,哪些不同,以及要注意的点

std::lower_bound查询到的只是第一个不满足查询条件的那个值,但和你要查的那个值不一定相等,所以binary_search在最后又用!_Pred(_Val, *_UFirst)进行反向判断。_Pred(*_UFirst, _Val) 为true的,所以再检查一下!_Pred(_Val, *_UFirst)就行了。反映到binary_search上就是,!_Pred(*_UFirst, _Val) 和!_Pred(_Val, *_UFirst)均为true,那么就是要找的那个值了。

2024-02-22 13:54:52 209

原创 std::lower_bound面对升序的情况,以及注意其查找规则

【代码】std::lower_bound面对升序的情况。

2024-02-21 14:49:58 123

原创 std::lower_bound所应用的容器,一定要是有序的,否则的话就会找不到。

注意,std::lower_bound里的比较规则是:pos.first <= key.first,如果是pos.first < key.first,结果又是什么?注意,这个排序规则是:first升序,而second降序。,而用lower_bound查找的时候,用的是first来查找。

2024-02-21 14:43:08 153

原创 __is_convertible_to,需要满足的相关条件

【代码】__is_convertible_to,需要满足的相关条件。

2024-02-19 13:15:33 121

原创 C++模板判断类中是否存在某个名称的成员函数

【代码】C++模板判断类中是否存在某个名称的成员函数。

2024-01-31 23:01:42 422

原创 在实际项目中使用std::enable_if

一个类有不止一个构造函数,想在构造元素的时候,做点别的:比如给元素附加一些数据。

2024-01-23 18:47:33 365

原创 C# 把文本文件转UTF-8

【代码】C# 把文本文件转UTF-8。

2024-01-03 15:35:01 592

原创 vscode的搜索速度好慢。准备试试ripgrep的带UI版本

vscode的搜索真的很慢。也不知道为什么,懒得研究了。最新的0.7版本,界面上不显示搜索结果。在github上找到了一个带UI的ripgrep。不到一秒钟,在9550个文件里找到了所有匹配结果。比ripgrep慢了好多倍。

2024-01-02 11:50:13 601

原创 研究:同样的C++模板在多个cpp里出现,编译器是否要重复生成?

2023年就要过去,马上要跨如2024年。祝大家在新的一年,有个好收成。一直以来不是很确定:同样的的模板,在各个cpp分别出现,编译器要实现几份?研究一下。

2023-12-31 22:01:53 784

原创 记录:可以观察模板实例化后代码的在线网站

C++ Insights

2023-12-31 10:42:31 362

原创 准备用vscode代替sourceinsight

看网上说vscode内置了ripgrep,但ctrl+shift+f在文件里查找的时候,速度特别慢,根本不像ripgrep的速度。ripgrep的速度是很快的。有的符号,sourceinsight解析不到。但今天再查询,速度又很快了,不知道什么原因。vscode版本1.85.1。

2023-12-29 16:34:43 982

原创 观察者(模板)的一点体会

在用具体类型(比如std::function)对Events的typename Func在定义时,其实已经把函数的参数和返回值都定义好了。但后来发现有个问题,如果我用Events<std::function<void(int,int)>>进行实例化,在调用Notify的时候,编译就有问题了。当编译器看到Events<std::function<bool(int, int)>>时,它只把除了Notify之外的函数给实例化了。这样的化,Events就会有多个Notify的版本,散落在各个模块(实例化它的地方)

2023-12-28 21:37:53 294

原创 隐式转换,以及const

先用隐式转换(std::string的构造函数不是explicit),将字符串'123"生成了一个std::string的临时对象。然后函数用const std::string&接住了它,将其lifetime一直延续到函数结束。据说const &作用堪比universal reference,只是多了个const。

2023-12-26 20:50:32 419

原创 doxygen注释头文件时,一定得有@file

而且@file后面要和当前的文件名保持一致,否则就出不来文档。那么对于头文件的注释文档是出不来的。其他的有没有不重要。

2023-12-25 13:05:40 364

架构之美 英文版 Beautiful Architecture

还需要多说吗? 经典书籍! 从国外网站上下的。

2009-12-04

一种Delegate机制的设计与分析

是我从期刊网上下载的,扣了我3块钱。 主要讲了委托的如何实现。

2009-08-27

计算机组成原理(唐朔飞版)

本书概念清楚,通俗易懂,书中举例力求与当代计算机结合,可作为高等院校计算机专业教材

2009-08-26

空空如也

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

TA关注的人

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