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