自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 virtual虚函数的用法

根据虚函数的不同位置,有着不同的作用。大致分为3类:虚拟继承,虚函数,纯虚函数(1)虚拟继承class A{public:    int data;};class B : virtual public A{private:    int b;};class C : virtual public A{private:    int c;

2016-05-25 17:29:07 996

原创 virtual应用于构造函数和析构函数的用途

virtual的应用实现了多态,那么对于类中的两个特殊的函数,构造函数和析构函数能不能用虚函数?(1)构造函数不能设计为虚函数        如果类中定义了虚函数,则会生成虚表,那么为了调用这个虚函数就要通过虚表来调用。可是,构造函数比较特殊,构造函数是在对象完全构造之前运行,那么就导致对象还没有实例化,那就还没有内存空间,没有内存空间肯定就找不到虚表,找不到虚表就不能调用虚函数,所以构造

2016-05-25 16:06:52 428

原创 不可思议的缩小vetor

如果vector的空间不够时,会自动的申请新的空间,空间大小为旧空间的2倍,然后将旧空间的数据拷贝到新空间,最后将旧空间释放。这种保留额外的内存空间已被将来增长的需要,从而防止增加新元素时过于频繁的重新分配。这也是vector比数组好的一点。    当然有没有想过,(1)如果原有的旧空间为128,现在需要的空间为130,如果用vector存储则会自动的申请更大的空间,则新的空间大小为256,这

2016-05-25 14:28:20 352

原创 STL算法_copy

STL标准模板库中的copy算法,整体设计比较复杂,使用起来也比较麻烦,因为copy函数为了强化效率可以说是无所不用其极。用到的编程技巧有函数重载,型别特化, 偏特化等技巧。所以STL库中的copy函数体现了泛化的思想      copy函数的整体架构:    (一)泛化的copy       inline OutputIterator copy(InputIterator first

2016-05-24 22:07:27 377

原创 Linux线程间同步机制_条件变量

有时看网上的博客自己会纳闷,进程间的同步机制和线程间的同步机制分别是什么?    其实进程之间是不用同步机制的,因为进程之间资源不共享,不需要同步机制来对所谓的临界资源进行保护,所以通常我们只讨论进程间的通信机制,有时候进程间的通信也称为进程间的同步,有管道,有名管道,信号量,消息队列,共享内存,socket, poll, epoll等,其实还有文件I/O,只是效率太慢不被采用,但是也能够实现

2016-05-23 16:34:05 2033

原创 Linux进程间通信_IPC机制的深入理解2

内核中每个IPC结构都有一个非负整数的标识符。但是多个进程利用IPC机制进行进程间的通信都是通过找到相同的IPC对象的键值就可以达到多个进程之间通过对同一个信号量, 消息队列,共享内存中的数据进行操作,这样多个进程就能够进行通信了。那么标识符和键(key)的作用    标识符:用来标识每个IPC结构。例如一台主机上现在有3个消息队列,则为了区分每个消息队列就用标识符对其进行标记。(这里的标

2016-05-17 17:31:09 458

原创 Linux进程间通信_IPC机制

刚开始接触IPC机制时,感觉这个知识点真的时晦涩难懂,因此自己将自己对IPC机制的理解做下总结。Linux中的IPC机制:信号量, 共享内存, 消息队列。注意这里的IPC机制的通信只能在一台主机上的多个进程线程之间进行通信,而跨主机之间的通信用socket, poll, epoll机制。一:信号量    计数信号量,其值在0和某个限制值之间,该值最大为32767, 这里信号量的

2016-05-16 18:03:23 1653

原创 红黑树节点的删除操作

二、红黑树删除后的调整删除节点后的调整要根据N的不同情形来分情况处理。假设删除节点后的树中,N的父节点为P,兄弟节点为S,兄弟节点的左孩子为SL,兄弟节点的右孩子为SR。需要注意的是空节点是有颜色的,它是黑色的。2.1 N为根节点这种情形非常简单,直接将其修改为黑色即可。因为如果N原来是黑色,则这样做不会改变其性质,如果原来为红色,我们需要保持红黑树的性质,也要把它修改为黑色。

2016-05-12 21:41:47 1133

原创 红黑树RB_tree

红黑树也是一种而叉搜索树,因此二叉搜索树的性质红黑树都具有,同时,我们知道为了避免最坏情况下的二叉搜索树(就是高度不平衡的情况)衍生出了AVL树,使其任何节点的左右子树的高度差相差最多1,从而达到平衡,以确保最坏情况下的搜索效率。当然红黑树为了比较好的搜索效率降低了对平衡的要求,但是红黑树仍然具有良好的平衡状态。    AVL树与RB_tree    AVL树也称为高度平衡树,其插入,删除

2016-05-10 18:01:08 768

原创 STL学习_萃取技术__type_traits

之前在学习STL库中的析构工具destory()时,提到过这样一句话,此函数设法找到元素的数值型别,进而利用__type_traits     让自己困惑的程序:    template    void destroy(T *pointer)    {        pointer->~T();    }    template    void destroy(

2016-05-10 14:33:02 931

原创 STL学习_stl_list.h_源码分析

stl_list.h中有几个函数自己觉得比较重要,transfer()  merge()  sort()#ifndef _SGI_STL_INTERNAL_LIST_H#define _SGI_STL_INTERNAL_LIST_H//list迭代器结构//不同的容器往往要给容器设置符合自己的迭代器,list的迭代器类型是双向迭代器//list的迭代器必须有能力进行递增

2016-05-08 20:43:29 676

原创 STL_学习_vector容器源码解析

这里自己总结了自己对SGI的vector容器的操作原理的一点理解。#ifndef _STL_VECTOR_H_#define _STL_VECTOR_H_templateclass vector{public:    typedef T value_type;    typedef value_type* pointer;    typedef const

2016-05-05 21:54:26 347

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除