c++
文章平均质量分 76
xixihaha331
这个作者很懒,什么都没留下…
展开
-
STL学习_SGI空间配置器
STL的六大组件:(1)容器:containers (2)算法:algorithms (3)迭代器:iterator (4)仿函数:functors (5)配接器:adapters (6)配置器:allocatorsSTL六大组件的交互关系:配置器是幕后奉献者,用来分配空间,算法通过迭代器来进行容器内容的存取等操作,仿函 数原创 2016-04-25 18:18:02 · 380 阅读 · 0 评论 -
STL学习_SGI二级空间配置器源码剖析
//二级空间配置器 __defaule_alloc_template如果感觉光看代码难以理解,可以看看上篇博客介绍了二级空间配置器是怎样进行内存分配的。 enum{__ALIGN = 8};//最小申请的空间的大小enum{__MAX_BYTES = 128};//能最大申请的空间的大小//SGI第二配置器有16个free_listsenum{__NFREELISTS原创 2016-04-28 19:39:29 · 403 阅读 · 0 评论 -
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 · 692 阅读 · 0 评论 -
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 · 362 阅读 · 0 评论 -
STL算法_copy
STL标准模板库中的copy算法,整体设计比较复杂,使用起来也比较麻烦,因为copy函数为了强化效率可以说是无所不用其极。用到的编程技巧有函数重载,型别特化, 偏特化等技巧。所以STL库中的copy函数体现了泛化的思想 copy函数的整体架构: (一)泛化的copy inline OutputIterator copy(InputIterator first原创 2016-05-24 22:07:27 · 388 阅读 · 0 评论 -
STL学习_hash_table源码分析
由于自己最近在看STL中的hash_table,被它精巧的设计所折服。无论是对桶子个数的确定,对链表的维护方式,以及判断元素在哪个桶子里等等方法都考虑到了方方面面。所以自己写了篇总结。hash_table存储数据的特性 二叉树,AVL树,RB_tree等数据结构各有各的用途,并且具有对数平均时间,但之所以有这样高的效率取决于输入的数据有足够的随机性,那么hash_table这种数原创 2016-06-07 20:45:03 · 1909 阅读 · 0 评论 -
c++学习_this指针
创建的每个对象里面既有数据成员,也有成员方法。但是我们知道相同类型的对象的成员方法都是相同的,因此相同类型的对象共用成员方法。那么问题来了,相同类型的对象共享成员方法,那么怎么知道是哪个对象调用这个成员方法。#include #include #include using namespace std;class CGoods{public: //void原创 2016-04-22 16:31:16 · 382 阅读 · 0 评论 -
c++学习_拷贝构造函数应用的三种情况
拷贝构造函数应用的三种情况:(1)对象初始化对象。(2)函数的参数是一个对象,则调用这个函数时要调用拷贝构造函数。(3)当函数的返回值是定义的类的对象时,函数执行完后返回调用者时调用拷贝构造函数。上面的三点如果难以理解,下面我具体的举了几个例子。1.对象初始化对象:#include using namespace std;class Test{pub原创 2016-04-22 18:43:05 · 383 阅读 · 0 评论 -
c++学习_构造函数的三种情况下的应用
构造函数应用于以下三中情况:(1)创建一个对象(2)给对象初始化(3)担当类型转换的角色构造函数用来创建一个对象大家都知道这里就不详细说明了,下面仔细的分析下第2,3种情况。 给对象初始化: 以下这个例子的运行结果是调用了两次构造函数。第一次是Test t;调用构造函数构造一个对象。第二次是t = 100;调用构造函数给对象初始化。那么为什么这里会调用一原创 2016-04-22 17:12:49 · 623 阅读 · 0 评论 -
Linux进程间通信_IPC机制
刚开始接触IPC机制时,感觉这个知识点真的时晦涩难懂,因此自己将自己对IPC机制的理解做下总结。Linux中的IPC机制:信号量, 共享内存, 消息队列。注意这里的IPC机制的通信只能在一台主机上的多个进程线程之间进行通信,而跨主机之间的通信用socket, poll, epoll机制。一:信号量 计数信号量,其值在0和某个限制值之间,该值最大为32767, 这里信号量的原创 2016-05-16 18:03:23 · 1677 阅读 · 0 评论 -
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 · 1021 阅读 · 0 评论 -
virtual应用于构造函数和析构函数的用途
virtual的应用实现了多态,那么对于类中的两个特殊的函数,构造函数和析构函数能不能用虚函数?(1)构造函数不能设计为虚函数 如果类中定义了虚函数,则会生成虚表,那么为了调用这个虚函数就要通过虚表来调用。可是,构造函数比较特殊,构造函数是在对象完全构造之前运行,那么就导致对象还没有实例化,那就还没有内存空间,没有内存空间肯定就找不到虚表,找不到虚表就不能调用虚函数,所以构造原创 2016-05-25 16:06:52 · 436 阅读 · 0 评论 -
不可思议的缩小vetor
如果vector的空间不够时,会自动的申请新的空间,空间大小为旧空间的2倍,然后将旧空间的数据拷贝到新空间,最后将旧空间释放。这种保留额外的内存空间已被将来增长的需要,从而防止增加新元素时过于频繁的重新分配。这也是vector比数组好的一点。 当然有没有想过,(1)如果原有的旧空间为128,现在需要的空间为130,如果用vector存储则会自动的申请更大的空间,则新的空间大小为256,这原创 2016-05-25 14:28:20 · 358 阅读 · 0 评论 -
const修饰函数参数,返回值,成员函数
看到const关键字,C++程序员首先想到的可能是const常量。这可不是良好的条件反射。如果只知道用const定义常量,那么相当于把火药仅用于制作鞭炮。const更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。(1)const修饰函数的参数 1.如果输入的参数采用“指针传递”,那么加上const可以防止意外的改动该指针,起到保护作用 例原创 2016-04-29 11:40:59 · 3581 阅读 · 0 评论 -
STL学习_萃取技术__type_traits
之前在学习STL库中的析构工具destory()时,提到过这样一句话,此函数设法找到元素的数值型别,进而利用__type_traits 让自己困惑的程序: template void destroy(T *pointer) { pointer->~T(); } template void destroy(原创 2016-05-10 14:33:02 · 942 阅读 · 0 评论 -
STL学习_SGI空间配置器_第一级配置器源码分析
这篇文章自己总结了下自己对于STL标准库中的SGI配置器的第一级配置器的源码分析,主要是想将自己上篇的理论知识具体化,#ifndef _STL_ALLOC1_H#define _STL_ALLOC1_H#include #include #include #include using namespace std;#if 1#include #de原创 2016-04-25 21:56:06 · 378 阅读 · 0 评论