![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 68
张三疯啊
个人博客:https://zjfans.github.io/
展开
-
Effective C++告诉我的那些事(一)
这里写目录标题为什么要用static const对象初始化的顺序构造函数有哪些坑为什么要用static conststatic 保证变量为类作用域,对象共享,即变量是唯一一份const保证变量不被修改static const 保证变量唯一且不被修改对象初始化的顺序构造函数有哪些坑...原创 2020-11-03 19:04:54 · 86 阅读 · 0 评论 -
move与forward分析
move 转移语句move的作用很简单,可以把左值和右值都转换为右值,比如vector已经有了右值的拷贝构造和赋值函数,目的是为减少临时对象的构造,提高效率。本文的主旨不是为了探讨对象的优化问题,所以对于左值、右值、临时对象、explicit(比较有意思的关键字)不会一一分析。一个右值变量本质还是一个左值,在传递的时候,会丧失它的右值属性,对于提供了左值和右值的接口来说,这样就丧失了本意。对于下面的例子来说,只会匹配左值,的但是是show(std::move(tmp));时,会将左值转换为右值,这样原创 2020-10-22 21:50:20 · 1718 阅读 · 1 评论 -
五种C++智能指针
1.不带引用计数的智能指 auto_ptr, scoped_ptr, unique_ptr原创 2020-08-04 20:53:33 · 129 阅读 · 0 评论 -
遍历有序数组为何比无序数组快
最近看到2篇有意思的文章,提出了2个问题1.为什么遍历有序数组比无序数组快?2.arr[i][j] 与 arr[j][i]的区别?让我们来看看第一个问题,下面给出2段代码图1//sort(vec.begin(),vec.end()); clock_t begin = clock(); for(int i = 0;i<10000;++i){ for(int j = 0;j <vec.size();++j){ if(vec[j] &g原创 2020-07-27 21:29:08 · 321 阅读 · 0 评论 -
继承与多态
继承1.继承的意义:(1):代码的重用:派生类只需要定义自己特有的成员,共享的成员都由继承而来,减少代码的冗余度。(2):在基类中给派生类提供统一的虚函数接口,方便使派生类进行重写操作,实现多态调用。2.派生类继承的成员的访问限定:继承方式 基类的访问限定 派生类的访问限定 外部访问限定publicpub...原创 2020-07-25 22:38:02 · 165 阅读 · 0 评论 -
函数模板---类模板
函数模板template<typename T> //模板参数列表在函数调用点,编译器用用户指定的类型,从原模版实例化一份函数代码出来不进行编译,因为不知道类型模板的实例化==》》发生在调用的时候模板函数==》》需要被编译器所编译的模板类参数==》》typename/class模板非类型化参数==》》非类型参数都是常量(整数、地址、引用),只能使用,不能修改...原创 2020-07-25 22:37:34 · 63 阅读 · 0 评论 -
实现简单的线程池
重点:多线程、锁简单的线程池,并未使用I/O复用,有时间可以写一个epoll的原创 2020-07-14 10:05:49 · 89 阅读 · 0 评论 -
用epoll实现的简单服务器
回顾I/O复用之epollepoll相比于select、poll还是有很多优点,在此重温一下epoll如有错误,欢迎指正#define _GNU_SOURCE_ //使用EPOLLRDHUP的代价#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<assert.h>#include<sys/types.h>原创 2020-07-10 21:21:51 · 242 阅读 · 0 评论 -
阻塞与非阻塞、同步与异步
阻塞与非阻塞:阻塞:若接受缓冲区的数据未准备好,进程阻塞,释放cpu,等待数据准备完成非阻塞:应用程序反复轮询接受缓冲区,数据未准备好,返回size == 0 && errno = EAGAIN;进程不会阻塞,依旧可以进行其他工作总结:阻塞非阻塞都是同步的同步与异步同步:应用程序读取数据时,是应用程序从接受缓冲区copy数据,整个进程需要等待数据的copy完成异步:copy由内核完成,数据copy完成(到buf内),通知应用程序。由于copy是由内核完成,所以应用程序翻译 2020-06-23 09:51:08 · 191 阅读 · 0 评论 -
函数重载
函数重载:1==》》前提是在同一作用域2==》》函数名相同,参数列表不同的函数构成重载3==》》与函数的返回值没有关系原创 2020-05-12 21:15:16 · 100 阅读 · 0 评论 -
leetcode-对称二叉树
检查一个二叉树是否是镜像的1.递归实现毫无疑问,递归的实现比较容易,我的版本是从根节点的左右孩子开始,先判断根的特殊情况,再进入递归,判断是在回溯的时候判断。官方解法是把2个root当作第一次左右传入,这个想法很好,代码也好看看完官方代码修改后,最快的一次可以100% bool isSymmetric(TreeNode* root) { if(root == nullpt...原创 2019-12-02 12:36:19 · 76 阅读 · 0 评论 -
c++实现一个简单的循环队列
实现一个循环队列队列的特点就是先进先出,尾插头出。涉及到循环,,,无论是数组还是链表,重点在于取余!!!,防止溢出。。。例如数组大小为5,当队尾为4时,( 且 队头!= 队尾 ),再入队后,队尾应改变为0,需用取余。#includeusing namespace std;class Queue {public://构造函数Queue(int size = 10) {_que...原创 2019-09-02 22:29:48 · 416 阅读 · 0 评论 -
复习:类和对象、深拷贝与浅拷贝
学习笔记。。。。。。。。。1…类和对象、this指针对象为类的实例化一个类拥有成员方法和成员变量,成员方法可以重载对象共享public中的成员方法,但private中的成员变量是各自私有的,成员方法也可以属于private,反之成员变量也一样当多个对象调用成员方法时,方法需要know哪个对象,所以成员方法一编译,都会加一个类类型的this指针,接受对象的地址,,对象在调用时方法时,会默...原创 2019-09-01 14:57:27 · 141 阅读 · 0 评论