5 小键233

尚未进行身份认证

生活才是我的职业,而程序员,那只是我的副业 ==

等级
博文 78
排名 3w+

个人项目总结

个人项目总结@todo

2019-05-18 18:00:10

C++ Task 的实现(lambda 是个好东西)

本文目的在于实现一个简单易用的task类。它的目的在于将将要执行的动作和上下文相关信息(如参数)保存起来,然后在想要执行的时候,发起这个动作。完成品的实例如下:structA{intb;};taskt([](Aa,Ab,intc)->void{a.a+=b.b+c;},A(233),A(A_v),4);t();那么这

2017-11-15 12:38:53

某天的想法 -- 为什么我们要努力

我一直相信这个世界是遵循加速回报定律了。就跟玩游戏一样,你后期越厉害,打出的伤害就越高。你以为的成长曲线是红色的,但实际上,成长的曲线是蓝色的。我记得早先一个华中科技的学长告诉我一个道理,他说,人出名要趁早,名望这种东西,越早越好。在我理解,是加到自己身上的buffer越早越好。这些新加的buffer,又会立刻促进下一个加给你的buffer。好比如这是一辆加速度永远为正的列车,你越早开始加速

2017-11-08 10:35:28

无题

很久没有写过博客了,不知道这篇算什么类型的。是技术的,还是心情的呢。今天终于算是看完了《STL源码剖析》。写的最后一份代码是红黑树的实现。在C++14的标准看来,这本书有些内容感觉还是过时了。如果有右值引用和匿名函数的话,也许模板还有更牛逼的玩法吧。我毕业了,学生时代写点什么东西就迫不及待拿出来分享(装逼)的心情反而没有了。了解到更多的技术,了解到更多的知识,才发觉,真是学无止境。简

2017-07-29 15:05:20

STL(七):stack 与 queue

好久没有写过新的内容了。主要是最近真的没有时间。好吧,这次介绍一下栈与队列的内容。stack先理一下之前写过的容器:vectordequelist这些都是序列式容器,但是使用了不同的数据结构来实现。栈的特性,就是先进后出(或者后进先出)一般来说,我们可以使用上面的容器来实现栈。事实上,当你看到STL中的设计时,才感叹,真是一种绝美的设计啊。这次先从

2016-10-01 22:52:40

STL(六):deque

隔了好多天,终于把这个deque给写了。deque是双端队列。也就是,方便在队头和队尾插入数据的队列。它能够解决vector增加元素时不停地重新分配内存和在头部插入效率低下的问题。看到它的数据结构才觉得真心厉害。数据结构看图deque的数据组织是这样的:有一块连续的小内存充当中控器,指向真正的数据缓冲区。有点像一本书的目录。而数据,真正是存储在缓冲区的。deque主要是维

2016-07-24 12:04:17

OgreBullet 的使用

最近做实训,用到Ogre的引擎。在渲染方面,Ogre的性能杠杠的,不用多解释,但是除了渲染,别的模块很多都是空缺的。so,当我尝试去做物理引擎的时候,发现就像来到了一篇荒原,对,就是荒原。所幸,前人做了很多的物理引擎与Ogre的匹配。OgreBullet就是与Bullet匹配的东西。但是这玩意有点历史,项目还是08年的,我使用的是Ogre的1.9版本了。简单尝试了一

2016-06-16 20:15:47

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

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

2016-05-31 10:56:30

STL(四):list

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

2016-05-27 16:39:11

STL(三):vector

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

2016-05-25 09:13:07

STL(二):construct 与 destroy

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

2016-05-24 21:14:20

STL(一):allocator 空间配置器

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

2016-05-24 20:49:54

new 与 delete 操作符

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

2016-05-09 12:38:20

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

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

2016-05-08 20:41:04

模板

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

2016-05-08 11:12:13

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

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

2016-05-07 13:49:12

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

在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

swap 函数的编写

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

2016-05-07 12:24:30

以对象的形式管理资源

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

2016-05-07 11:20:45

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

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

2016-05-06 16:16:51
奖章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。