自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小键233

~~233

  • 博客(16)
  • 收藏
  • 关注

原创 STL(五):连续空间的二维数组实现

这个不属于STL 中的内容,仅是个人补充使用嘛~一开始是这样的。 加入我们需要新建一个二维数组,一般像下面这样用:int row = 2, col = 3;int array[2][3]; //1//orvector< vector<int> > v(row, vector<int>(col) );//2//or int* array = new int[row*col];//3//or

2016-05-31 10:56:30 1567

原创 STL(四):list

STL 中的list 可以说是与vector 相对应的一个容器。 什么意思呢? 嗯,在我看来,vector 是线性表,空间连续,它的特点是原生指针作为它的迭代器,支持随机存取。但是插入和删除的操作代价高,并且有可能有一部分空间被浪费。 list 是链表,空间不连续,它的特点是对空间利用率高,插入和删除数据是常量时间,但是不支持随即存取,并且每个节点都需要浪费掉额外的两个指针的内存空间(不要忽视

2016-05-27 16:39:11 1363

原创 STL(三):vector

一和二中吧STL 的基础都说明白了,那我们尝试着实现一下第一个容器:vector (好敷衍呀~)vector 算是比较简单的一种容器了,但饶是如此,我都写了好久(主要是其他的各种函数费时间)准备工作在直接开始说vector 的时候的时候,我会假设你懂得以下函数的运用(最好自己去实现一下吧)uninitialized_copyuninitialized_copy_nuninitialized_

2016-05-25 09:13:07 3611

原创 STL(二):construct 与 destroy

STL 中关于对象的构造和销毁是使用construct 和 destroy 函数 的。 这个内容写在文件stl_construct.h 中。_type_traits在讲主题之前,有必要介绍一个_type_traits 与若干概念。 简单而言,这个类的作用就是萃取出我们需要的各种内容。它的模板代码如下://POD 的意思是:Plain Old Data ,即标量型或传统的C struct 型别

2016-05-24 21:14:20 935 1

原创 STL(一):allocator 空间配置器

大概…………很久很久以前,我做了一个浪(er)漫(bi)的决定,就是自己也实现一个STL,毕竟造轮子呀,才是最浪漫的不是吗。于是,山很高,海很深,浪花一浪接一浪,我义无反顾走上了作死之路。 nice ,作死之路的第一部分,就是关于allocator,空间配置器的。STL 有自己的内存管理,其中最最基础的就是allocator ,任何内存的请求和释放都要经过它。它本质上就是封装了一下malloc 和

2016-05-24 20:49:54 466

原创 new 与 delete 操作符

new 和 delete 是C++ 中一对动态申请内存的操作符。new_handler 行为在std的命名空间中,有这样的代码:namespace std{ typedef void (*) () new_handler; new_handler set_new_handler(new_handler p) throw();}set_new_handler的作用是,允许用户设置当

2016-05-09 12:38:20 921

原创 模板Trait 技术与简述template 元编程

模板Trait 技术想了好久都没有想到合适的例子,已是干脆直接使用[1]中的例子就好了。STL 中引入了迭代器的概念。但是在本文中的例子不直接使用STL 的迭代器,而是写了一段很简短的代码,作为演示使用。 本例中的迭代器有三种:Forward_Iter,只能向前进,也就是只能加非负数Bidirectional_Iter,可以双向增减Random_Iter,可以随意增减 *本例并没有沿用ST

2016-05-08 20:41:04 898

原创 模板

隐式接口与编译器多态假如有如下的模板函数:templatetypename T>void doSomething(T& t){ if(t.getIs() ) { t.traver(); }}那么,对于T 而言,它的隐式接口便是:bool getIs();traver();T 的类型必须要支持这两个接口才能通过编译。而

2016-05-08 11:12:13 608

原创 完全不知道怎么取标题,但是不进来看看也许会后悔--其实我一开始想写关于virtual 函数的

假如,现在有个类,它含有数据,我们需要为它编写一些遍历的函数。 就比如,类是这样的:class SomeClass{ enum{ Length = 512}; int element[Length];public: void traver() { //做一些遍历 }};那如果有需求,要求遍历函数能够依据不同的情况,采取不同的遍历函数,怎

2016-05-07 13:49:12 609

原创 面向对象设计时的若干考虑

在OOP 中,类之间的关系可以如下表示[1]: 当类是public 继承的时候,它们之间是is-a 关系. 当类是private 继承的时候,它们之间是is-implemented-in-terms-of 关系 当类是耦合关系时,它们之间是has-a 或者 is-implemented-in-terms-of 关系[1]中还提到两个条款: 绝不重新定义继承而来的non-virt

2016-05-07 12:46:30 321

原创 swap 函数的编写

swap 函数用来交换两个变量的值,C++ 标准库提供了这个函数。前面的博客也有提到 copy and swap 技术,可以处理自我交换的情况。 那一个典型的实现就是这样的:template<typename T>void swap(T& a, T& b){ T temp(a); a = b; b = temp;}*C++ 标准库就提供了这个函数,所以并不用自己去手动

2016-05-07 12:24:30 1627

原创 以对象的形式管理资源

题目来自[1]条款13:以对象管理资源。 因为太贴切了,所以直接用了。首先说一下资源。 所有资源就是,一旦用了它,将来必须还给系统。[1]而资源一般是[1]:内存文件描述器(file decriptors)互斥锁 (mutex locks)图形界面中的字型和笔刷数据库连接网络sockets我们假设有个资源就叫做Resource 好了,它通过工厂函数(fac

2016-05-07 11:20:45 737

原创 正确地复制对象--oeprator=与copy构造函数

额,这个名字有点怪怪的=_=ok,下面进入正题,为了演示方便,代码只写出简略的部分。copy构造函数class Base{public: Base() {} Base(const Base& ) { cout<<"Base copy "<<endl; }};class Derived: public Base{public: De

2016-05-06 16:16:51 551

原创 谈谈virtual函数

virtual , 写C++ 的都不会陌生吧,用于类的成员函数,用以表现对象多态的性质。为多态基类声明virtual 函数以前看书时,得到一条“黄金定律”(这是错误的): 永远应该以virtual 声明类的析构函数如果不这么做,那么当类成为基类时,在回收对象内存,会发生不正确的行为,导致内存泄漏。这里就不在赘述细节了。乍一看,很有道理不是么,防患于未然。但是少年呀,不能这么年轻,轻易声明vir

2016-05-06 14:18:38 2286 2

原创 Empty Class(空类)的作用

假如有一个这样的类,没有数据成员和操作(除了本身默认存在的构造函数、复制构造函数、析构函数、copy assignment函数),那么,它能做什么?class Empty{};一开始我也是以为这样的空类能够有什么作用呢,直到我看了[1],才感叹自己如此肤浅(所以也建议你去看:)先假设我们有个很傲娇的类,它不希望通过构造函数生成,也不希望别的对象对它赋值。很不巧,如果我们没有在类中声明复制构造函数

2016-05-05 17:01:03 8680

原创 const 成员函数重载

先看一段引用[1]: 许多人漠视一件事实:两个成员函数如果只是常量性(constess)不同,可以被重载ok,下面为了解释,定义一下下面这个类:class Cstring{ private: char str[32]; public: Cstring(char instr[], size_t n) { for(int i=0;i<n;+

2016-05-05 15:56:48 699

空空如也

空空如也

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

TA关注的人

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