杀别人能摸牌
码龄8年
关注
提问 私信
  • 博客:361,084
    社区:5,103
    366,187
    总访问量
  • 38
    原创
  • 74,706
    排名
  • 92
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:互相交流学习

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2017-06-08
博客简介:

sinat_39088557的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    1
    当前总分
    47
    当月
    0
个人成就
  • 获得97次点赞
  • 内容获得58次评论
  • 获得302次收藏
创作历程
  • 2篇
    2024年
  • 3篇
    2021年
  • 4篇
    2020年
  • 1篇
    2019年
  • 24篇
    2018年
  • 6篇
    2017年
成就勋章
TA的专栏
  • QT中的问题
    4篇
  • C++中的问题
    21篇
  • ACIS中的问题
    4篇
  • 算法
    6篇
  • 网页
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

354人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

日志打印中对容器(包括多级容器)的通用输出

在日志打印中,往往有打印一个数组、集合等容器中的每个元素的需求,这些容器甚至可能嵌套起来,如果每个地方都用for循环打印,将会特别麻烦。基于这种需求,作者尝试实现一个通用的打印函数SeqToStr(),将容器序列化。
原创
发布博客 2024.06.27 ·
746 阅读 ·
17 点赞 ·
0 评论 ·
5 收藏

减少map/unordered_map查找过程中比较/哈希的次数且用户代码简洁的方法

简化map/unordered_map的find和判断find是否成功,且比count()更高效,对多级map操作更简单
原创
发布博客 2024.06.25 ·
149 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

用基于范围的for循环遍历bitset的所有有效位置

标准库中的std::bitset,利用若干个uint32_t或者uint64_t作为存储单元,来表示多个位置的0-1状态,可以节约很多的空间。例如,有31组开关,最少可以只用一个uint32_t来存储这31组开关的状态,只占用4个字节。现在的需求是,对于这31组开关,依次找到其中打开的,做一系列的处理。标准的std::bitset并没有提供遍历的接口。在SGI版本的实现中,std::bitset有_Find_First()和_Find_Next()的接口,可以通过如下代码遍历:std::bit
原创
发布博客 2021.05.05 ·
2524 阅读 ·
0 点赞 ·
2 评论 ·
0 收藏

用位域模拟非字节对齐的整型(uint4_t,int4_t等)

与硬件打交道的时候,会存在不是字节对齐的整型,比如4位无符号整型(uint4_t)、24位有符号整型(int24_t)这种,如果直接用usinguint4_t = uint8_t; using int24_t = int32_t;这种别名的话,虽然也可以用用,但是当值溢出的时候,我们代码是没法发觉的,最终可能使用一个在表示范围外的值。此外当硬件传过来的数如果是一个负数,比如int4_t的-8(0x8),我们用int8_t变量接收的话,用int8_t的方法来解释,必然不是-8,而是8(0x08,符号位为0..
原创
发布博客 2021.03.21 ·
1869 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

判断tuple里面是否有某种类型的容器,然后将一个指针或者实体压入这个容器

工作中遇到一个需求,一个模块要处理很多种命令,这些命令定义成了不同的类,其中有些类是“收”命令,有些类是“发”命令。用户定义好命令对象会传给模块,如果是“收”命令,会在一定时间之后,检查传给模块的这个命令对象,看里面的值,收到的东西会写给这个命令对象。所以这些命令,一开始我都在模块内部存成指针,这样一个缺点就是需要保证模块在真正执行这个命令的时候,这个命令没有被析构,不然就成了野指针。这种粗暴情况下,我存命令的容器用一个std::tuple,里面存的是各种命令指针的std::deque,形如:te
原创
发布博客 2021.01.10 ·
462 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

利用SFINAE+模板函数偏特化,判断一系列类似的枚举是否有某种成员,并写针对这一系列的通用打印函数

SFINEA的概念就是在模板的实例化过程中,如果一种实例方法匹配失败了,不会报错,而是继续寻找其它实例方法。在最近的应用中,我碰到一个需要打印枚举的需求,打印枚举,一般的实现就是在打印枚举的函数里面写一个局部静态的哈希表(std::unordered_map),把枚举值和要输出的字符串一一对应。类似于这种: static const char* Enum2Str(Format content) { static auto && enum_map = []()
原创
发布博客 2020.12.13 ·
449 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

模板函数的偏特化探索

有一个生成坐标的函数,这个函数会受5个参数的影响,导致具体的实现有所不同,其中某些组合下的实现相同,为了让那个判断的函数简短一点,就想到用模板来做,并且会出现模板函数的全特化和偏特化的情况。但是C++目前的标准不允许模板函数存在偏特化,只允许模板类存在偏特化。我这五个变量都不是类型参数,而是值参数。由于不允许结构体作为模板的参数:我就想,能不能用常量表达式+联合体的方式,把一个结构体转换成整型?于是就动手写了一下。用联合体实现一个U16(unsigned short)和一个16
原创
发布博客 2020.12.09 ·
394 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

为什么modern C++中默认构造函数也最好加一对空的花括号?

C++11开始,变量的初始化除了=等号号还能用初始化列表{},其中在 Effective Modern C++ 中,作者还强调初始化列表可以解决以前的一个很恼火的问题,就是如果调用默认构造函数,不能在后面加空的括号,因为这会被解释成函数的声明:Widget w1; //默认构造函数Widget w2();//声明一个返回值为Widget类型、不接受参数的函数w2Widget w3{};//默认构造函数看到这里我就产生了疑惑:不加括号不就完了吗,同样也是调用默认构造函数呀?话是这么说,但我还是照着
原创
发布博客 2020.06.01 ·
934 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

不推公式不用证明不断链,求单链表中环的入口结点

首先看另一道题:AB两条无环单链表,求A、B的第一个交点,没有则返回null。这道题可以根据加法交换律来做,也就是分别用两个指针p1、p2遍历A和B,当到达链表末尾的时候,转向另一条链表的头结点,那么如果换头后p1和p2第一次相等了,就到达了A、B的第一个交点(或者null)。为什么呢?因为,所以当p1、p2都换头之后,他们必定会同时到达链表末尾,那么他们与各自所在链表末尾的距离...
原创
发布博客 2020.01.02 ·
161 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

利用python批量合并手机哔哩哔哩下载的视频各分段

从手机哔哩哔哩上下载的一个电视剧,分为很多P,每一P里面又被分成了如下几个段的blv文件(本质上是flv格式),利用Python+ffmpeg,将这个系列的视频每一P都合并成单个的文件,只要输入这个视频的根目录地址即可整个代码只需修改videoPath即视频的根文件夹路径即可通用,注意将ffmpeg.exe所在的文件夹路径添加到环境变量“path”中。详细内容在注释里注明了。impo...
原创
发布博客 2019.10.06 ·
1339 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

用python代码去掉CPP代码中的注释

最近的作业,第一次正儿八经地使用python。主要思路是,将能干扰注释符号的内容(CPP里就是字符串了)列举出来,一共有“"”“//”和“/*”,在一段文本中,这三个符号谁先出现,则谁的优先级高,直到他们的结束符“"”“
”和“*/”出现,这中间的内容不需要管。get1stSymPos就是做这么一件事然后核心函数rmCommentsInCFile就是从0到字符串结尾,开始找最先出现的符号,如...
原创
发布博客 2018.12.31 ·
2270 阅读 ·
3 点赞 ·
0 评论 ·
2 收藏

含有虚函数的struct(class)内存对齐和空间大小的计算(win32)

考虑这样一个类b,依次包含一个虚指针、char、类a、int、double数组struct a { char c;//1+7 double d;//8};//16struct b { char c; a s; int i; double d[3]; virtual ~b() {}}; 按照道理来讲,虚指针vptr占用4字节,...
原创
发布博客 2018.09.10 ·
1230 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

由所给长度相同的单词,按位组合出字典序最小的新单词

一道笔试编程题,想出一个时空复杂度O(N*L)的方法,不知道有没有更快的 。题目描述:现给出N个长度为L的单词。单词中仅包含大写英文字母(A-Z)。1<=N<=20001<=L<=10你可以从这些单词中的第n个字母中挑一个作为你拼词的第n个字母比如给出N=3个L=4的单词:CAKETORNSHOW你可以(但不仅限于)拼出以下单词:C...
原创
发布博客 2018.08.30 ·
863 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

华为笔试,语法树,用单行的类LISP语法字符串表示

有数字(0~9构成的正整数)、三种操作运算符(加法+、乘法*、自增^)、分隔符一个空格、左右括号表达式形式是“(运算符 参数)”形式比如(+ 3 4),求值结果7;(+ (* 2 3)(^4))求值结果11语法树结束后,后面加任何字符都是合法的,比如(+ (* 2 3)(^4)))))))#$是合法的匆匆忙忙地写了一个,感觉太长了。。。应该有很大的优化空间。主要思路:用一个va...
原创
发布博客 2018.08.15 ·
981 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

std::vector删除元素迭代器以及内存的变化

 std::vector是顺序容器,当用erase成员函数删除一个迭代器指向的元素时,会自动移动(不是std::move)后面的元素到前面来,而迭代器的指向不变(如果是std::map、std::list这类关联型容器,迭代器会失效),并且不会回收内存(也就是capacity不会变)。当用swap成员函数跟自身的拷贝交换时,才能释放多余内存。代码如下,自定义一个foo类以监视构造、赋值、复制、...
原创
发布博客 2018.08.09 ·
3555 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

生产者消费者问题 C++解决方法

抄自维基百科 :生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两个线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消...
原创
发布博客 2018.08.05 ·
3097 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

C++ STL中的 emplace

英文释义(以前还真的很少用到这个单词,但是经常在键入empty()函数的时候冒出来):emplace 英 [ɪm'pleɪs]   美 [ɪm'pleɪs]  v. 放列,安置,安放;相对于insert、push、push_back系列先构造临时变量再复制到目标位置,emplace直接在目标位置上构造了。而且emplace支持“变参模板”,也就是说,如果它的实例类的构造函数有多个参...
原创
发布博客 2018.08.03 ·
1050 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++11 标准新特性:Defaulted 和 Deleted 函数

Defaulted 函数背景问题C++ 的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。例如:清单 1 1 2 3 ...
转载
发布博客 2018.08.01 ·
173 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

阿里在线编程测验题

2018年7月17日,阿里在线编程测验,题干如下,它最后面的两条注释应该有说反了依赖关系。今天我们看到的阿里巴巴提供的任何一项服务后边都有着无数子系统和组件的支撑,子系统之间也互相依赖关联,其中任意一个环节出现问题都可能对上游链路产生影响。小明做为新人接收到的第一个任务就是去梳理所有的依赖关系,小明和每个系统的负责人确认了依赖关系,记录下调用对应系统的耗时,用这些数据分析端到端链路的...
原创
发布博客 2018.07.17 ·
3545 阅读 ·
0 点赞 ·
2 评论 ·
5 收藏

多线程问题,实现三个线程顺序循环输出123123123...

        阿里中间件笔试题记录:有三个worker线程:worker1、worker2、worker3。三个线程分别只能输出1、2、3。请写出代码,实现三个线程顺序循环输出123123123...#include <iostream>#include <thread>//thread#include <condition_variable>//cond...
原创
发布博客 2018.07.10 ·
2531 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏
加载更多