摘要: 代码里看见花括号直接限制作用域来释放lock_guard,记录一下: bool sign=false; { std::lock_guard<std::mutex>(ctx.ctx_mutex); sign=ctx.sign; } int count=0; 上面代码中lock_guard生存周期只有两 阅读全文
posted @ 2022-05-22 21:53 放不下的小女孩 阅读(26) 评论(0) 推荐(0) 编辑
摘要: std::thread和std::bind都是延迟调用对象的函数,参数都使用了右值引用即移动和复制语义。 std::thread: template< class Function, class... Args > explicit thread( Function&& f, Args&&... a 阅读全文
posted @ 2022-05-22 17:51 放不下的小女孩 阅读(446) 评论(0) 推荐(0) 编辑
摘要: unique算法只是简单的将相邻重复的元素用不同的其他元素覆盖,容器本身大小不变。 阅读全文
posted @ 2022-03-11 21:51 放不下的小女孩 阅读(21) 评论(0) 推荐(0) 编辑
摘要: STL的算法和容器中常常能让用户提供自定义的比较方法,但是注意其中的坑: 一般的算法如sort(iterator,iterator,com)是函数模板,可以自动推断com的类型,所以com可以使functional和函数指针。 而容器是模板类,需要自己传入指针如priority_queue<int, 阅读全文
posted @ 2022-02-22 23:23 放不下的小女孩 阅读(48) 评论(0) 推荐(0) 编辑
摘要: C++11的bind函数,绑定一个可调用对象时,第二个参数为调用对象时,注意传入临时对象会调用拷贝构造函数,而传入指针则不用拷贝。 在写webserver时,先前创建的监听套接字就被第二个参数的对象复制了。然后bind完成后,调用其析构函数把监听套接字给关闭了。 阅读全文
posted @ 2022-02-20 00:32 放不下的小女孩 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 互斥锁pthread_mutex_t、posix信号量sem_t、条件变量pthread_cond_t等都有一个初始化和销毁函数xxxx_destroy。 一般对这些原始类进行封装时,需要对操作函数的返回值进行判断,操作错误时一般要抛出一个异常。但是destroy函数返回错误码时却不需要抛出异常。因 阅读全文
posted @ 2022-01-28 23:19 放不下的小女孩 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 插入头尾:迭代器全部失效但是引用不失效 删除头尾:被删除的元素迭代器和引用失效 插入和删除中间:迭代器和引用全部失效 其中插入头尾操作引用不失效的原因是,deque由一个map和连续数组组成,其中map是指向数组的指针即二级指针,当插入头尾时,如果内存不够,会①复制原map的信息②申请新的连续空间作 阅读全文
posted @ 2022-01-17 23:39 放不下的小女孩 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 1、不相关线程传送文件描述符使用unix套接字的CMSG的辅助数据传输,其中CMSG_DATA宏返回cmsg结构中辅助数据的指针,而这个CMSG_DATA宏仅仅是根据其参数提供的cmsg指针来返回其中的辅助数据成员,没有什么特殊之处。而内核实际是根据套接字选项,传送进程描述表中指向文件表的指针。 根 阅读全文
posted @ 2022-01-15 17:33 放不下的小女孩 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 先说坑,stable_sort()的比较函数的参数不能使用引用(可以用常引用或者常量或者值传递)。 sort()和stable_sort()两个排序算法均可加入自定义的比较符来进行排序。 template <class RandomAccessIterator, class Compare> voi 阅读全文
posted @ 2021-11-10 12:26 放不下的小女孩 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 正则表达式中的或意义和C++中的||意义相同,均表示满足其中一个条件即可。如下式表示匹配一个个位数或者小于255的三位数。 [0-9]|(25[0-5])|(2[0-4][0-9]) 但是在有些测试正则表达式的软件中,正则表达式的或的用法类似于C++的逻辑或||,当满足某个条件后则不计算之后的其他条 阅读全文
posted @ 2021-11-06 12:29 放不下的小女孩 阅读(833) 评论(0) 推荐(0) 编辑