高级技巧
fqbqrr
这个作者很懒,什么都没留下…
展开
-
C++静态构实现多态
C++静态构实现多态原创 2022-10-25 17:36:47 · 184 阅读 · 0 评论 -
在d中,策略思想可扩展至函数
在d中,策略思想可扩展至函数原创 2022-10-25 11:19:11 · 327 阅读 · 0 评论 -
vim更改背景等
vim更改背景等原创 2022-08-12 17:42:20 · 321 阅读 · 0 评论 -
c++按序或位分串2
c++按序或位分串2原创 2022-06-28 17:46:03 · 477 阅读 · 0 评论 -
c++按序或按位分串
c++按序或按位分串原创 2022-06-27 23:20:39 · 289 阅读 · 0 评论 -
c++的静态反射与动态反射
动态反射:元<型名 F>用 值转=函数<空(F*f,常 串&名)>;//每一项转值,成员项,都可转成指针,指与名对应元<型名 T>类 段转基{公: 虚~段转基()=默认; 虚 空 符号()(T*p)常=0;};元<型名 T,型名 F>类 段转:公 段转基<T>{ 公: 段转(常 串&名,F ...原创 2019-11-09 12:48:33 · 3948 阅读 · 0 评论 -
过滤要点:如常式允许返回不同类型
这就是为什么自己搞,搞半天都不行的原因.原创 2020-05-03 16:46:33 · 302 阅读 · 0 评论 -
d串插件示例
原文在此我们想要:enum sql = ` CREATE TABLE Person ( id INTEGER NOT NULL, name TEXT, birthday DATE );`;/+ 通过上面生成下面: class Person { int id; string text; Date birthday; void save() { /* 忽略实现 */ } }+/这样:class ObjectImpl(some_argument原创 2020-09-14 15:04:00 · 283 阅读 · 0 评论 -
vim的call call与e129没有函数名与如何装饰函数
fun! Bd(F,...)#不动函数,带参你操作了某个函数,然后不动let s:i=line('.')let H=function(a:F):call call(H,a:000)#e129没有函数名,:exe ':norm '.s:i.'G'endf#调用代码fun! Qk3():call Bd('Qk2')endf#下面是bd0版本fun! Bd0(F)"不动函数不带参let s:i=line('.')let s:f=function(a:F):call s:f()原创 2020-10-15 20:57:55 · 772 阅读 · 2 评论 -
c++高性能分配内存
全新分配库:tcmalloc和jemalloc,是10年前的技术,比林操默认的ptmalloc快.je在分配4~8kb时实际分配8kb,浪费.tc内部有80多个大小分类,折腾.同时为了支持大页如2m/1g分配.大型软件需要大页分配.目标是全自动.更小更稳定的申请/释放内存时间.ns级返回可用内存块,不调用sbrk()和brk(),而是用mmap()方式.最好16字节对齐,对sse更友好.技术方案:位图+首适/下适,调用释放后,下次首适,可重新利用释放掉内存.再次分配相同内存时,用下适.取消链表,用向量(原创 2020-10-24 09:51:22 · 664 阅读 · 0 评论 -
大神的反射核心
#定义 造元数据实现(构名,...)\ //根据变长参数,用元组来保存内部结构静 动 反成(构名 常&){\ 构 反射成员{\ 常式 推导(动)静 应现(){\//这里. 中 造元组(__变长实参__);\ }\ 用 型=空;\ 用 大小类型=整常<整,取参个数(__变长实参__)>;\//参数个数 常式 静 串视 名(){中 串视(#构名,型长(#构名)-1);}\原创 2020-11-16 15:45:28 · 239 阅读 · 0 评论 -
c++带参有成员推断.
元<类 总空,元<类...>类 操,类...O>构 探测器{用 型=假型;};元<元<类...>类 操,类...O>构 探测器<空型<操<O...>>,操,O...>{用 型=真型;};//主要就是在这里应用,空型<操<O...>>.//下面的宏中,先用`_有`来代表这个,以后这种推导操作都可以这样做.#define 有成员(S) \ 元<类 T,型名...O> \原创 2020-11-17 14:38:52 · 317 阅读 · 0 评论 -
c++数组用法.
参考地址为了提供原生数据类似功能/性能.元素直接放实例中,非堆上分配,编译期确定大小,编译器隐式声明构造/析构/赋值操作符.自动推导数组大小全局数组作配置参数,但得手动加上大小.数组 g配置段={1,2,5,6,7,9,3,4};数组<正32型>g配置段={1,2,5,6,7,9,3,4};用函数模板代替类模板,c++函数模板允许部分推导.元<型名 R,型名 P,整 N,整...I>常式 数组<R,N>到数组实现(P(&a)[N],序列<I原创 2020-12-01 21:59:42 · 730 阅读 · 0 评论 -
c++猜元组
元<类 T,类 F,整...I>空 猜元组(常 整 i,T&&t,F&&f,序列<I...>){ ((i==I&&((空)f(整常<整,I>{}),0))...);}元<类 T,类 F>内联 空 猜元组(常 整 i,T&&t,F&&f){ 常式 动 N=元组大小<退化型<T>>::值; 猜元组(i,t,f,造序<N&g原创 2020-12-03 16:28:33 · 291 阅读 · 0 评论 -
c++向量变量动作.
元<型名 F,型名...T>空 向变动作(F&f,向量<变量<T...>>&呀){ 静 常式 整 I=变量大小值<变量<T...>>; 整 i=0;极 要下=0; 对(动&t:呀){//比元组展开灵活点, i=t.索引();//表示这是变量的第几个. 切为编<I>(i,[&](动 k){ 常式 整 N=推导(k)::值;要下原创 2020-12-03 17:46:40 · 441 阅读 · 0 评论 -
d的可变头模式
原文地址可变头结构模式今天,用户定义类型仍是D中的二等公民.如不支持(头部可变性,能够在不改变引用值的情况下,改变头).本文介绍udt模式来实现它.介绍D有一等,二等公民.一等公民有数组和指针,他们可隐式头可变.如,const(T[])可隐式转换为const(T)[].D有多种转换方法:别名 本,构造器,分发操作,转换操作,及子类化.指针和动态数组退化为它们的可变头的方式与前面不一样,要模仿,就要定义新的转换类型.更改编译器和语言太麻烦.且隐式转换很难懂.但有时很方便,可试试下面方法.Unqu原创 2020-12-06 15:59:56 · 412 阅读 · 0 评论 -
翻译d中的生成函数
原地址前不久,AA大神发起完全转发讨论,发现,有时需要更改函数的属性,如加/减/挂起用户定义属性/存储类,这在我实现开放方法时也努力过.我放在bolts元编程库里面了.元 前向(别名 函数){ 导入 标.特征:形参; 静 每一( 溢出;__特征(取重载,__特征(父,函数),__特征(标识符,函数))){ 动 前向(形参!溢出 实参) { 中 溢出(实参); } }}...整 加(整 a,整 b){中 a+b;}串 加(串 a,串 b原创 2020-12-13 11:00:01 · 333 阅读 · 0 评论