摘要:
一般来说,智能指针的实现需要以下步骤: 1.一个模板指针T* ptr,指向实际的对象。 2.一个引用次数(必须new出来的,不然会多个shared_ptr里面会有不同的引用次数而导致多次delete)。 3.重载operator*和operator->,使得能像指针一样使用shared_ptr。 4 阅读全文
posted @ 2019-05-19 22:46
unique_ptr
阅读(719)
评论(0)
推荐(0)
摘要:
1、单例模式:单例模式:用来创建独一无二的,只能够有一个实例的对象。 单例模式的结构是设计模式中最简单的,但是想要完全实现一个线程安全的单例模式还是有很多陷阱的。 2、应用场景:共享数据或者共享访问点; 创建一个对象需要消耗的资源过多,如访问IO和数据库等资源; 需要定义大量的静态常量和静态方法(工 阅读全文
posted @ 2019-05-19 22:34
unique_ptr
阅读(2377)
评论(0)
推荐(0)
摘要:
C++面试或者笔试的时候经常遇到这样一个问题,就是自己实现一个string类。 本人总结自己的面试经验以及参考网上各位网友的总结,总得来说常见的主要实现的包括以下几个方面(如有不如,欢迎补充) 常见:普通的构造函数、拷贝构造函数、析构函数、字符串的链接即‘+’号运算符重载、字符串赋值即‘=’号运算符 阅读全文
posted @ 2019-05-19 22:27
unique_ptr
阅读(598)
评论(0)
推荐(0)
摘要:
先考虑一种情况,对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。 先看一个例子,有一个学生类,数据成员时学生的人数 阅读全文
posted @ 2019-05-19 22:16
unique_ptr
阅读(3149)
评论(0)
推荐(0)
摘要:
emplace操作是C++11新特性,新引入的的三个成员emlace_front、empace 和 emplace_back,这些操作构造而不是拷贝元素到容器中,这些操作分别对应push_front、insert 和push_back,允许我们将元素放在容器头部、一个指定的位置和容器尾部。两者的区别 阅读全文
posted @ 2019-05-19 21:57
unique_ptr
阅读(1224)
评论(0)
推荐(0)
摘要:
一.传统枚举类型的缺点 1.作用域冲突 传统C++中枚举元素被暴漏在外层作用域中,这样若是同一作用域下有两个不同的枚举类型,但含有相同的枚举元素,就会产生冲突。enum EnumOne{ A = 1, B = 2}; enum EnumTwo{ A = 1, C = 2}; error C2365: 阅读全文
posted @ 2019-05-19 21:45
unique_ptr
阅读(493)
评论(0)
推荐(0)
摘要:
版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa原创文章,转载请标明出处。 https://blog.csdn.net/caoshangpa/article/details/79392878 enable_sh 阅读全文
posted @ 2019-05-19 21:43
unique_ptr
阅读(756)
评论(0)
推荐(0)
摘要:
版权声明:本文为灿哥哥http://blog.csdn.net/caoshangpa原创文章,转载请标明出处。 https://blog.csdn.net/caoshangpa/article/details/79173351 一.std::bind bind是这样一种机制,它可以将参数绑定于可调用 阅读全文
posted @ 2019-05-19 21:33
unique_ptr
阅读(963)
评论(0)
推荐(0)
摘要:
C++ 11 Lambda表达式 C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C ,P 阅读全文
posted @ 2019-05-19 21:29
unique_ptr
阅读(1387)
评论(0)
推荐(0)
摘要:
熟悉C++98/03的对于for循环就再了解不过了,如果我们要遍历一个数组,那么在C++98/03中的实现方式:int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < 10; i++) cout << 阅读全文
posted @ 2019-05-19 21:25
unique_ptr
阅读(17454)
评论(1)
推荐(0)
摘要:
熟悉C++的童鞋都知道,为了避免“野指针”(即指针在首次使用之前没有进行初始化)的出现,我们声明一个指针后最好马上对其进行初始化操作。如果暂时不明确该指针指向哪个变量,则需要赋予NULL值。除了NULL之外,C++11新标准中又引入了nullptr来声明一个“空指针”,这样,我们就有下面三种方法来获 阅读全文
posted @ 2019-05-19 21:23
unique_ptr
阅读(1264)
评论(0)
推荐(0)
摘要:
C++是一门伟大的语言,永远给程序员最大的设计自由, 未使用的特性从不产生副作用,新版本永远完全兼容旧版本。 C++11先前被称作C++0x,即ISO/IEC 14882:2011,是C++编程语言的一个标准。 之前的C++标准包括C++98、C++03。 虽然此后的[C++14]才是C++的现行标 阅读全文
posted @ 2019-05-19 21:18
unique_ptr
阅读(533)
评论(0)
推荐(0)
摘要:
一,fork函数#include <unistd.h> pid_t fork(void) 返回值:-1,失败。子进程返回0,父进程返回子进程的进程ID。 父子进程的0~3G用户地址空间,差不多一样。比如数据段,代码段,栈,堆,环境变量、用户ID、宿主目录、进程工作目录、信号处理方式,缓冲区等。父子进 阅读全文
posted @ 2019-05-19 21:05
unique_ptr
阅读(756)
评论(0)
推荐(0)
摘要:
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 class 阅读全文
posted @ 2019-05-19 18:03
unique_ptr
阅读(256)
评论(0)
推荐(0)
摘要:
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *right; 6 TreeNode(int x) : 7 val(x), 阅读全文
posted @ 2019-05-19 17:38
unique_ptr
阅读(84)
评论(0)
推荐(0)
摘要:
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
posted @ 2019-05-19 17:36
unique_ptr
阅读(83)
评论(0)
推荐(0)
摘要:
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 1 class Solution { 2 public: 3 void push(int value) { 4 res.push(value); 5 if(Min.empty()) Mi 阅读全文
posted @ 2019-05-19 17:29
unique_ptr
阅读(94)
评论(0)
推荐(0)
摘要:
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 1 class S 阅读全文
posted @ 2019-05-19 17:24
unique_ptr
阅读(120)
评论(0)
推荐(0)
摘要:
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。(反转二叉树) 1 class Solution { 2 public: 3 //栈的非递归 4 void Mirror(TreeNode *pRoot) { 5 if (pRoot == NULL)return; 6 stack<TreeNod 阅读全文
posted @ 2019-05-19 17:04
unique_ptr
阅读(115)
评论(0)
推荐(0)
摘要:
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 4 class Solution { 5 public: 6 bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) 7 { 8 if(pRoot2 阅读全文
posted @ 2019-05-19 16:57
unique_ptr
阅读(97)
评论(0)
推荐(0)
摘要:
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 1 class Solution { 2 public: 3 ListNode* Merge(ListNode* pHead1, ListNode* pHead2) 4 { 5 ListNode* 阅读全文
posted @ 2019-05-19 16:33
unique_ptr
阅读(136)
评论(0)
推荐(0)
摘要:
题目描述 输入一个链表,反转链表后,输出新链表的表头。 输入一个链表,反转链表后,输出新链表的表头。 阅读全文
posted @ 2019-05-19 16:23
unique_ptr
阅读(113)
评论(0)
推荐(0)
摘要:
题目描述 输入一个链表,输出该链表中倒数第k个结点。 1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 9 class 阅读全文
posted @ 2019-05-19 16:12
unique_ptr
阅读(72)
评论(0)
推荐(0)
摘要:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 阅读全文
posted @ 2019-05-19 16:09
unique_ptr
阅读(85)
评论(0)
推荐(0)
摘要:
关于CAS等原子操作 在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。有了这个原子操作,我们就可以用其来实现各种无锁(lock 阅读全文
posted @ 2019-05-19 11:28
unique_ptr
阅读(1323)
评论(0)
推荐(0)
摘要:
当调用closesocket关闭套接字时,SO_LINGER将决定系统如何处理残存在套接字发送队列中的数据。处理方式无非两种:丢弃或者将数据继续发送至对端,优雅关闭连接。事实上,SO_LINGER并不被推荐使用,大多数情况下我们推荐使用默认的关闭方式(即下方表格中的第一种情况)。 下方代码段显示li 阅读全文
posted @ 2019-05-19 11:21
unique_ptr
阅读(782)
评论(0)
推荐(0)
摘要:
ET模式下每次write或read需要循环write或read直到返回EAGAIN错误。以读操作为例,这是因为ET模式只在socket描述符状态发生变化时才触发事件,如果不一次把socket内核缓冲区的数据读完,会导致socket内核缓冲区中即使还有一部分数据,该socket的可读事件也不会被触发根 阅读全文
posted @ 2019-05-19 11:16
unique_ptr
阅读(2629)
评论(1)
推荐(0)
摘要:
利用 lsof -p +进程 id 查看该进程打开的文件描述符 利用lsof -i : +端口号 查看进程的信息 有些时候需要确定进程内部当前运行了多少线程,查询方法如下: 1)通过pstree命令(根据pid)进行查询: [root@xqsj_web2 ~]# ps -ef|grep java / 阅读全文
posted @ 2019-05-19 11:15
unique_ptr
阅读(574)
评论(0)
推荐(0)
摘要:
通过eventfd实现的事件通知机制 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 #include <sys/eventfd.h>int eventfd(unsigned int initval ,int flags ); 创建一个能被用户应用程序用于时间等待 阅读全文
posted @ 2019-05-19 00:00
unique_ptr
阅读(6828)
评论(0)
推荐(0)

浙公网安备 33010602011771号