
C++
C++相关示例备忘录
xhchen2024
这个作者很懒,什么都没留下…
展开
-
C++ 实现基于时序公平的读写锁
读写锁与普通的互斥锁的区别在于有两种上锁方式:读锁和写锁。不用的用户对同一个读写锁获取读锁是非互斥的,其他情况(读锁和写锁、写锁和写锁)则是互斥的。在“读”操作较多的情况下使用读写锁可以提高并发。原创 2023-10-12 21:53:57 · 424 阅读 · 0 评论 -
现代C++:使用 shared_from_this 防止 this 提前被释放
概括一下shared_from_this的作用:可以在类的成员函数中直接通过this得到指向当前所在对象的shared_ptr的智能指针,具体操作如下..原创 2023-08-16 22:40:55 · 431 阅读 · 0 评论 -
C++ 万能引用实现完美转发示例
C++万能引用的作用简单来说就是既能够接收左值也能接受右值。但引用自身而言,无论其是左值引用还是右值引用,本身都是一个左值..原创 2023-08-04 20:27:17 · 272 阅读 · 0 评论 -
C++11 线程池实现
相比上一篇把信号量换成了条件变量, 用C++11标准库里的互斥锁和条件变量类重写了添加任务函数和工作线程执行函数原创 2023-07-12 23:17:48 · 124 阅读 · 0 评论 -
C++ 线程池实现
创建多个工作线程同时维护一个公共的任务队列, 任务队列非空时通过信号量唤醒阻塞等待的工作线程, 工作线程通过互斥锁互斥的从任务队列中取出任务, 然后执行任务。原创 2023-07-09 23:46:40 · 205 阅读 · 0 评论 -
C: mmap使文件映射至内存实现进程间通信
举例示范在Linux环境下两个线程(进程同理)通过将同一个文件映射至各自进程地址空间中, 从而实现进程间通信。具体mmap的细节可参考..原创 2023-07-02 00:02:46 · 356 阅读 · 0 评论 -
C++ 实现极简版智能指针
C++ 智能指针是一种用于管理动态对象的指针,它可以自动化地分配和释放内存,避免了手动管理内存的繁琐和容易出错的过程。常见的智能指针有 unique_ptr、shared_ptr 和 weak_ptr 等类型。其中,unique_ptr 所指向的资源只能被一个持有者拥有,而 shared_ptr 则允许多个持有者共享同一个资源,weak_ptr 则用于避免 shared_ptr 的循环引用问题。使用智能指针可以大大提高程序的安全性,避免内存泄露和悬挂指针等问题。原创 2023-06-15 00:03:01 · 66 阅读 · 0 评论 -
现代C++:const_cast, dynamic_cast和reinterpret_cast应用示例
在现代 C++ 中,类型转换被广泛使用,其中包括 const_cast、dynamic_cast 和 reinterpret_cast。const_cast 可用于去除 const 修饰符,dynamic_cast 可用于安全地转换指针或引用的类型,而 reinterpret_cast 则可用于将指针或引用转换为不同类型。原创 2023-04-27 14:51:22 · 131 阅读 · 0 评论 -
C++ 指向类成员函数的指针
在 C++ 中,指向类成员函数的指针是指向类或结构体成员函数的指针。它可以用于在该类或结构体的对象上调用成员函数。指向成员函数的指针使用作用域解析运算符(::)和取地址运算符(&)声明原创 2023-04-17 20:05:32 · 209 阅读 · 0 评论 -
C++11 计算程序段运行时间
std::chrono是C++11新加入的方便时间日期操作的标准库,其中,Duration表示一段时间间隔,用来记录时间长度,可以表示几秒钟、几分钟或者几个小时的时间间隔;Clocks表示时钟,每个时钟都有一个起点(或者叫做纪元epoch)和一个tick rate;Time point表示一个具体的时间点。原创 2023-04-17 13:38:23 · 256 阅读 · 0 评论 -
C++ 输入行数及行内元素数均未知情况的处理
【代码】C++ 输入行数及行内元素数均未知情况的处理。原创 2023-04-07 19:34:42 · 300 阅读 · 0 评论 -
C++ 11 移动语义应用-移动构造函数和移动赋值
C++ 11 引入了移动语义,它可以避免不必要的拷贝操作,提高程序的性能和效率。移动语义的核心是右值引用,它可以绑定到临时对象或将要销毁的对象,从而实现资源的转移而不是复制。为了支持移动语义,C++ 11 提供了两种特殊的成员函数:移动构造函数和移动赋值。移动构造函数和移动赋值可以显著提高类对象在容器中插入、删除、排序等操作的效率,也可以简化一些编程场景,例如返回大型对象或交换两个对象的内容。原创 2023-04-10 16:44:31 · 151 阅读 · 1 评论