随笔分类 -  C++

摘要:共享内存作为进程通讯的一种方式,通过内存映射文件,然后允许不同的进程访问同一块内存实现进程间通讯。 示例主要分为读和写两个不同的进程。 ################################################################################## 阅读全文
posted @ 2019-12-27 15:51 漆天初晓 阅读(3519) 评论(0) 推荐(2) 编辑
摘要:智能指针weak_ptr为弱共享指针,实际上是share_ptr的辅助指针,不具备指针的功能。主要是为了协助 shared_ptr 工作,可用来观测资源的使用情况。weak_ptr 只对 shared_ptr 进行引用,而不改变其引用计数,当被观察的 shared_ptr 失效后,相应的 weak_ 阅读全文
posted @ 2019-12-23 11:46 漆天初晓 阅读(293) 评论(0) 推荐(0) 编辑
摘要:shared_ptr 是一个共享所有权的智能指针,允许多个指针指向同一个对象。shared_ptr 对象除了包括一个对象的指针,还包括一个引用计数器。当每给对象分配一个share_ptr的时候,引用计数加一;每reset一个share_ptr, 或者修改对象的指向(指向其他对象或者赋值nullptr 阅读全文
posted @ 2019-12-23 10:39 漆天初晓 阅读(612) 评论(0) 推荐(0) 编辑
摘要:unique_ptr 对对象独有管理,无法复制,共享,值传递,可以使用move语义来转移控制权。 std::default_delete<int> d; std::unique_ptr<int> u1; std::unique_ptr<int> u2 (nullptr); std::unique_p 阅读全文
posted @ 2019-12-20 17:57 漆天初晓 阅读(183) 评论(0) 推荐(0) 编辑
摘要:遇到了一个客户程序出问题,自己这边始终无法重现的bug。为了检查问题,查到了一个添加git的commit信息到程序中的方法,感觉对程序版本控制十分好用。 一,项目中添加如下文件 文件结构: GitVersion |--GetGitRevisionDescription.cmake |--GetGit 阅读全文
posted @ 2019-11-20 17:06 漆天初晓 阅读(1049) 评论(0) 推荐(0) 编辑
摘要:类型声明: 实现函数: 阅读全文
posted @ 2019-10-17 11:06 漆天初晓 阅读(1185) 评论(1) 推荐(0) 编辑
摘要:可变参数模板,自己尝试了个例子,如下: 阅读全文
posted @ 2018-09-14 17:09 漆天初晓 阅读(509) 评论(0) 推荐(0) 编辑
摘要:相互转化见示例 阅读全文
posted @ 2018-09-11 11:11 漆天初晓 阅读(13636) 评论(0) 推荐(3) 编辑
摘要:std::string 没有原生的字符串替换函数,需要自己来完成 阅读全文
posted @ 2018-09-11 10:59 漆天初晓 阅读(16324) 评论(0) 推荐(0) 编辑
摘要:c++二分查找的用法 主要是 std::binary_serach, std::upper_bound以及std::lower_bound 的用法,示例如下: 结果: 阅读全文
posted @ 2018-09-03 11:21 漆天初晓 阅读(295) 评论(0) 推荐(0) 编辑
摘要:1. boost::unorder_map 实现自定义KEY 输出结果为: Find ! 2. std::unorder_map 实现自定义KEY 奇怪的地方来了,std的结果有时候是 Find ! 有时候是 Not Find ! 没弄明白这个std::unorder_map怎么回事,我自己直接用了 阅读全文
posted @ 2018-08-31 16:41 漆天初晓 阅读(694) 评论(0) 推荐(0) 编辑
摘要:multi_index_container是c++ boost库中的一个多索引的容器。因工作中用到了,特来测试试用。 输出: 可以看到以int型为索引的,输出是按照从小到大来排序的。以string为索引的,是按照字母顺序来输出的。 阅读全文
posted @ 2018-08-22 11:13 漆天初晓 阅读(1781) 评论(0) 推荐(0) 编辑
摘要:boost::program_options 解析命令行,包括多参数命令行解析示例如下: 示例代码: 命令行参数输入: 输出结果: 阅读全文
posted @ 2018-08-07 12:27 漆天初晓 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:为仿照stl的遍历风格,实现对自定义类型的遍历。 1. 需要遍历的基础结构: 2. 需要实现统一风格遍历的自定义结构: 3. 遍历器的结构: 4. 为实现要求,需要在自定义结构添加部分函数: 5. 测试代码: 阅读全文
posted @ 2018-08-01 17:42 漆天初晓 阅读(878) 评论(0) 推荐(0) 编辑
摘要:Rand函数 单纯的rand()会返回一个0至RAND_MAX之间的随机数值,而RAND_MAX的值与int位数有关,最小是32767。不过rand()是一次性的,因为系统默认的随机数种子为1,只要随机数种子不变,其生成的随机数序列就不会改变。 srand函数 srand()可用来设置rand()产 阅读全文
posted @ 2018-08-01 11:51 漆天初晓 阅读(741) 评论(0) 推荐(0) 编辑
摘要:1. memset函数: void *memset(void *s, int ch, size_t n); 函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s ,是对较大的结构体或数组进行清零操作的一种最快方法。 函数原型 : 阅读全文
posted @ 2018-07-31 12:33 漆天初晓 阅读(245) 评论(0) 推荐(0) 编辑
摘要:在很多字符串类库里都实现了split函数。不过在std里没有实现。在这里拿出几个: 1. 用单字符作为分隔 2. 由多个分隔符来分隔: 阅读全文
posted @ 2018-07-27 14:17 漆天初晓 阅读(6673) 评论(0) 推荐(0) 编辑
摘要:将域名解析为ip地址并输出: 阅读全文
posted @ 2018-07-24 15:43 漆天初晓 阅读(1203) 评论(0) 推荐(0) 编辑
摘要:1. error LNK2019: 无法解析的外部符号 "class boost::system::error_category const & __cdecl boost::system::system_category(void)" 解决:X86与X64库不匹配引起的,需要编译一个对应版本的库。 阅读全文
posted @ 2018-07-24 10:30 漆天初晓 阅读(3347) 评论(0) 推荐(0) 编辑
摘要:std::function 是一个模板类,用于封装各种类似于函数这样的对象,例如普通函数,仿函数,匿名函数等等。其强大的多态能力,让其使用只依赖于调用特征。在程序的升级中,可以实现一个调用表,以兼容新旧不同的实现方式。 例如: 阅读全文
posted @ 2018-06-21 16:01 漆天初晓 阅读(288) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示