
C/C++
文章平均质量分 67
tissar
Talk is cheap, show me the code.
展开
-
C 语言快速排序 —— 数组和链表
快速排序算法是一种分治算法,它的核心思想是通过选择一个基准元素,将数组分为两部分,通过移位使得左边部分的所有元素都小于等于基准元素,右边部分的所有元素都大于等于基准元素,然后分别对左右两部分递归地进行排序。原创 2025-03-20 11:19:02 · 180 阅读 · 0 评论 -
【Lex & Yacc】计算器DEMO
一个基于YACC的命令行DEMO,支持加减乘除括号优先级。原创 2023-06-06 16:34:13 · 168 阅读 · 0 评论 -
C++使用智能指针的必要性
C++ 使用智能指针的必要性评判智能指针的标准多线程的情况下面是一些 shared_ptr 的笔记。shared_ptr 的申请对象shared_ptr 的拷贝构造shared_ptr 作为判断条件shared_ptr 解引用shared_ptr 独占判断返回c/c++指针附属品 weak_ptr评判智能指针的标准在C/C++中,指针很重要,却是麻烦的来源。如果一个指针建立是没有初始化,那就是...原创 2019-03-06 20:00:02 · 3263 阅读 · 0 评论 -
Boost线程池
Boost线程池Boost 线程池位于组件 asio 中,是一种固定大小的线程池。class thread_pool : public execution_contextTypesNameDescriptionexecutor_typeExecutor used to submit functions to a thread pool.fork_event...转载 2019-03-08 22:10:32 · 3921 阅读 · 1 评论 -
C/C++处理多个mutex
线程安全地交换相同类型的两个对象已知在一个多线程的环境,有一个结构体用于计数。struct counter{ pthread_mutex_t m; int cnt;} counter_t其中 m 是互斥锁,用于保证数据 cnt 的排他性访问。当我们需要交换同一个结构体的两个对象时,很容易就会写出下面的代码。void counter_swa...原创 2019-03-04 22:45:33 · 1994 阅读 · 0 评论 -
C语言运算符优先级
优先级 运算符 描述 结合性 1 ++ -- 后缀增/减量 从左到右 ( ) 函数调用 [ ] 数组下标 . 结构体、共用体成员 -> 结构体、共用体成员指针 (type){list} 复合文字 2 ++ -- 前缀增/减量 从右到左 + - 正负号 ! ~ ...转载 2019-02-13 17:02:04 · 136 阅读 · 0 评论 -
使用异或交换两个变量是低效的
使用异或交换两个变量是低效的异或交换C 语言对策C++ 语言对策异或交换我们通常会遇到这样的面试题:请编写一个函数,交换 a、b 两个变量,且不能使用额外的临时变量。通常答案是这样的:#define SWAP(a,b) do { \ (a) ^= (b); \ (b) ^...原创 2019-02-28 00:02:06 · 364 阅读 · 0 评论 -
errno详解
errno 详解作用相关函数多线程作用errno 是 error number 的缩写,意味系统调用错误码。如果系统调用返回成功,errno 有可能但不一定会置0;而系统调用出错时,errno 必定会被设为对应的错误编号。因此,强迫症患者可以在调用系统调用之前,手动将 errno 置0。不过,如果系统调用返回成功,谁会闲着没事去看 errno 呢?相关函数一般来说,我们是不是需要了解每个...原创 2019-02-27 23:17:20 · 7220 阅读 · 2 评论 -
Linux内嵌链表(sys/queue.h)详解
Linux 内嵌链表(sys/queue.h)详解queue 简介SLISTSTAILQLISTTAILQCIRCLEQ例程queue 简介C语言不像C++语言可以使用STL,在编程中需要用到链表时,通常需要程序员重新设计链表的结构体。不统一的编程规范会增加代码的阅读难度,而且链表的正确性需要验证。头文件queue.h为C语言中的链表提供了更加标准规范的编程接口。如今的版本多为伯克利加州大...原创 2019-02-11 16:05:42 · 11680 阅读 · 4 评论 -
编辑距离(levenshtein distance)C/C++实现
编辑距离(levenshtein distance)C语言实现Levenshtein distance 距离简介Levenshtein distance 的由来编辑距离的内涵编辑距离示例编辑距离 C语言实现最小时间复杂度最小空间复杂度Levenshtein distance 距离简介Levenshtein distance 的由来Levenshtein distance 原本叫 edit d...转载 2019-01-14 13:25:10 · 5002 阅读 · 7 评论 -
C/C++中分离(detach)线程的陷阱
C/C++中分离(detach)线程的陷阱线程资源回收pthread_join()pthread_detach()什么时候分离线程会存在陷阱?方法论即quick_exit(),又需要析构PS线程资源回收线程资源的回收有两种方式:连接线程 —— int pthread_join(pthread_t thread, void **retval);分离线程 —— int pthread_det...原创 2019-01-10 20:52:55 · 9589 阅读 · 0 评论